对象和数据结构
PPG007 ... 2021-12-26 About 1 min
# 对象和数据结构
# 数据抽象
代码不应当暴露实现,通过提供更加抽象的形态表述数据。
# 数据、对象的反对称性
- 过程式代码难以添加新的数据结构,因为需要修改所有函数。
- 面向对象代码难以添加新函数,因为必须修改所有类。
# 迪米特法则
- 迪米特法则:模块不应了解它所操作对象的内部情形。
- 对象不应通过存取器暴露内部结构。
- 如果是数据结构,那么其中的变量自然会暴露内部结构,迪米特法则也就不适用了。
# 数据传送对象:只有公共变量、没有函数的类DTO
这类数据结构不应该被塞入业务规则方法。
# 总结
- 对象曝露行为,隐藏数据。便于添加新对象类型而无需修改既有行为,同时也难以在既有对象中添加新行为。
- 数据结构曝露数据,没有明显的行为。便于向既有数据结构添加新行为,同时也难以向既有函数添加新数据结构。
- 在任何系统中,我们有时会希望能够灵活地添加新数据类型,所以更喜欢在这部分使用对象。
- 另外一些时候,我们希望能灵活地添加新行为,这时我们更喜欢使用数据类型和过程。