This question already has answers here:
Why use getters and setters/accessors?

(39个答案)


5年前关闭。




艾伦·霍尔布(Allen Holub)写道:



听起来合理,但他接着说:



坦白说,这听起来很疯狂。

我了解信息隐藏的原理,但是如果没有访问器和更改器,您将根本无法使用Java bean。我不知道在模型中没有访问器的情况下如何遵循MVC设计,因为该模型不能负责呈现 View 。

但是,我是一个年轻的程序员,并且每天我都会学习更多有关面向对象设计的知识。也许有更多经验的人可以考虑这个问题。

艾伦·霍尔布的文章以供引用
  • Why Extends Is Evil
  • Why Getter And Setter Methods Are Evil


  • 相关问题:

    最佳答案

    Holub告诉您没有问题,您通常应该避免更改对象的状态,而应采用集成方法(行为执行)来实现此目的。正如Corletk指出的那样,明智的做法是:长时间地认真思考最高级别的抽象,而不仅仅是利用getter / setter进行漫不经心的编程,而这只会使您绕着封装进行一次尝试。

    但是,任何人告诉您应该“从不”使用setter或“从不”访问原始类型时,我会遇到很多麻烦。确实,在所有情况下保持这种纯度水平所需的努力都会并且最终会导致代码的复杂性高于使用适当实现的属性。您只需要有足够的意识就可以知道何时要以牺牲长期痛苦为代价来规避短期 yield 规则。

    Holub不信任您知道两者之间的区别。我认为了解差异是使您成为专业人士的原因。

    07-24 13:57