gpt4 book ai didi

java - 许多类使用一个对象,但对它有不同的看法

转载 作者:行者123 更新时间:2023-11-30 09:33:44 25 4
gpt4 key购买 nike


对不起,我想不出一个更能 self 描述的标题。

在我正在开发的独立应用程序中(这是一项大学作业)我面临着这个问题:
我的实体(或模型对象或业务对象等)只不过是 POJO。

自然有(将有)许多类使用它们,但不应允许其中一些类修改它们的值(例如使用它们的 setter);我们可以说我需要将一个对象传递给具有不同权限的不同类:对某些类只读,对允许修改对象状态的其他类读写。

一个例子是一个只显示对象信息的 GUI 窗口:我想确保这个类完全不知道如何修改对象的状态。

我阅读了很多有一些相关问题的主题(只读接口(interface)、只读实现、防御副本等...),但我没有找到适合我的情况。

假设我想仅向特定类授予对对象的 setter 方法的访问权限,但我找不到实现此目的的方法。

我最初认为接口(interface)会很好(例如 ReadOnlyObject 与 getter 和 WriteOnlyObject 与 setter 和 Object 实现它们)但是问题是任何使用 ReadOnlyObject 的类都可以轻松访问 WriteOnlyObject 接口(interface)。除此之外,我不认为仅使用 getter 或 setter 编写接口(interface)是一种好的做法。

求助! @_@

最佳答案

OOP 就是遵守契约(Contract)。如果一个方法的契约声明它不会修改一个对象,那么即使它可以修改它也不应该修改——如果修改了,那就是一个错误。将业务对象直接传递给 GUI 没有错。

当然,您应该尽可能将类设计为不可变的,但大多数业务对象都不是不可变的,试图解决这个问题会导致笨拙的解决方案。如果您仍然担心暴露 setter,最好的解决方案是创建一个不可变的传输对象,其中包含原始值的副本。

关于java - 许多类使用一个对象,但对它有不同的看法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com