2

我试图通过操作我必须在 bean 属性的 getter 方法中编写逻辑的其他属性来为 java bean 属性赋值。从设计的角度来看这样做是否正确?

4

2 回答 2

0

如果 getter/setter 只是简单地反映了值,那么拥有它们或将值设为私有是没有意义的。如果你有充分的理由,公开一些成员变量并没有错。如果您正在编写一个 3d 点类,那么公开 .x、.y、.z 是非常有意义的。

Getter/setter 在可能存在副作用的情况下很有用,您需要更新其他内部变量,重新计算缓存值并保护类免受无效输入的影响。

他们通常的理由是,他们隐藏了内部结构,通常是最没用的。例如。我将这些点存储为 3 个浮点数,我可能决定将它们作为字符串存储在远程数据库中,因此我将制作 getter/setter 来隐藏它们,就好像你可以这样做而不会对调用者的代码产生任何其他影响。

我认为 OOp 的基本原则是封装和信息隐藏。

封装与获取或设置属性相关的行为——这允许以后更容易地添加附加功能(如验证)。

隐藏属性的内部表示,同时使用替代表示公开属性

因此,在 setter 和 getter 中编写验证逻辑就可以了……

于 2013-11-06T09:58:34.673 回答
0

是的,很好。

您想隐藏操作该 Bean/POJO 对象的成员变量的逻辑并将其封装。我不知道它到底在做什么,但如果它只是关于你的对象的成员变量,那么它确实属于 setter/getter。

于 2013-11-06T10:15:13.400 回答