Getters和Setters是糟糕的OO设计吗?
2022-09-01 07:55:33
简要阅读上面的文章,我发现getters和setters是糟糕的OO设计,应该避免使用它们,因为它们与封装和数据隐藏相悖。既然如此,在创建对象时如何避免这种情况,以及如何将这一点建模为模型。
在需要获取器或 setter 的情况下,可以使用哪些其他替代方案?
谢谢。
简要阅读上面的文章,我发现getters和setters是糟糕的OO设计,应该避免使用它们,因为它们与封装和数据隐藏相悖。既然如此,在创建对象时如何避免这种情况,以及如何将这一点建模为模型。
在需要获取器或 setter 的情况下,可以使用哪些其他替代方案?
谢谢。
你错过了重点。该文章的有效而重要的部分是:
不要询问完成工作所需的信息;询问具有信息的对象为您完成工作。
Java风格的 getter 和 setter 的扩散是忽略这个建议的症状。
Getters或setter本身并不是糟糕的OO设计。
糟糕的是编码实践,它包括一个getter和一个每个成员的setter自动,无论是否需要该getter/setter(再加上使成员公开,不应该公开) - 因为这基本上将类的实现暴露给外部世界,违反了信息隐藏/抽象。有时,这是由IDE自动完成的,这意味着这种做法比预期的要广泛得多。