javabean/POJO设计

javabean/POJO设计,java,Java,我试图通过操纵其他属性来为Javabean属性赋值,我必须在bean属性的getter方法中为这些属性编写逻辑。从设计角度来看,这样做正确吗?如果getter/setter只是镜像了值,那么就没有必要让它们成为私有的值。如果您有充分的理由,那么公开一些成员变量并没有错。如果您正在编写一个3d point类,那么使用.x、.y、.z public非常有意义 getter/setter在可能存在副作用的情况下非常有用,您需要更新其他内部变量、重新计算缓存值并保护类不受无效输入的影响 通常的理由是,它

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

如果getter/setter只是镜像了值,那么就没有必要让它们成为私有的值。如果您有充分的理由,那么公开一些成员变量并没有错。如果您正在编写一个3d point类,那么使用.x、.y、.z public非常有意义

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

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

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

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

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


因此,在setter和getter中编写验证逻辑是很好的…

是的,它非常好


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

发布代码会让其他人理解我对设计的担忧。。。。。。。但是您的回答确实很有帮助,对于一个普通的3d point类,最好通过gettes/setters访问它们,例如,当您的x坐标发生变化时,调试就变得容易多了。