1. 数据抽象
我们不愿暴露数据细节,更愿意以抽象形态表达数据。要以更好的方式呈现某个对象的包含的数据。
2. 数据、对象的反对称性
对象把数据隐藏于抽象之后,暴露操作数据的函数。数据结构暴露其数据,没有提供有意义的函数。
复杂系统中,添加新数据类型而不是新函数时,对象和面向对象就比较适合
添加函数而不是数据类型的时候,过程式代码和数据结构更适合。
3. 得墨忒耳律
模块不应了解它所操作对象的内部情形。 方法不应调用由函数返回的对象的方法。
3.1 火车失事,连串调用
3.2 混杂 对象和数据结构混杂
3.3 隐藏结构
4. 数据传送对象
最为精炼的数据结构,是一个只有公共变量、没有函数的类。即数据传送对象(DTO),
总结:
对象暴露行为,隐藏数据,便于添加新对象类型而无须修改既有行为,但难以在对象中添加新行为。
数据结构暴露数据,没有明显的行为,便于向即有数据结构添加新行为,但难以向既有函数添加新数据结构。
视情况而使用