对象和数据结构

PPG007 ... 2021-12-26 About 1 min

# 对象和数据结构

# 数据抽象

代码不应当暴露实现,通过提供更加抽象的形态表述数据。

# 数据、对象的反对称性

  • 过程式代码难以添加新的数据结构,因为需要修改所有函数。
  • 面向对象代码难以添加新函数,因为必须修改所有类。

# 迪米特法则

  • 迪米特法则:模块不应了解它所操作对象的内部情形。
  • 对象不应通过存取器暴露内部结构。
  • 如果是数据结构,那么其中的变量自然会暴露内部结构,迪米特法则也就不适用了。

# 数据传送对象:只有公共变量、没有函数的类DTO

这类数据结构不应该被塞入业务规则方法。

# 总结

  • 对象曝露行为,隐藏数据。便于添加新对象类型而无需修改既有行为,同时也难以在既有对象中添加新行为。
  • 数据结构曝露数据,没有明显的行为。便于向既有数据结构添加新行为,同时也难以向既有函数添加新数据结构。
  • 在任何系统中,我们有时会希望能够灵活地添加新数据类型,所以更喜欢在这部分使用对象。
  • 另外一些时候,我们希望能灵活地添加新行为,这时我们更喜欢使用数据类型和过程。
Last update: December 26, 2021 13:38
Contributors: PPG007