知识卡片

存取器堆砌是行为错位的信号

普通读书笔记卡 · 1942.k

内容

如果一个类只有一堆字段和对应的存取器(getter/setter),没有任何实质行为,这是一个警示信号:面向对象设计的目标是提供能做丰富行为的对象,而不是把数据简单地交给别人处理。更具体的诊断方法是看调用方——如果某处代码反复调用一系列存取器来取数据,这本身就说明有一段行为被放错了地方,应该把这段逻辑挪到真正拥有这些数据的类里去,而不是让外部代码围着数据转。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第3章《类图:基础》(源文件:_epub-src/EPUB/2.xhtml) - 结论依据:原文明确"你应该非常害怕类中只有字段集合及它们的存取器。面向对象设计希望提供能够做丰富行为的对象,因此不应该只简单地提供数据给其他对象。如果你重复调用存取器存取数据,这是一个征兆:某些行为应该转移到拥有该数据的对象",给出了具体的诊断标准(重复调用存取器)和处理方向(迁移行为)。 - 原始内容:你应该非常害怕类中只有字段集合及它们的存取器。面向对象设计希望提供能够做丰富行为的对象,因此不应该只简单地提供数据给其他对象。如果你重复调用存取器存取数据,这是一个征兆:某些行为应该转移到拥有该数据的对象。