对象和数据结构
6.1 数据抽象
更愿意用抽象状态表述数据,这并不只是用接口和赋值器,取值器就万事大吉,要以更好的方式呈现某个对象包含的数据,需要作出严肃的思考。傻乐着乱加取值器和赋值器,是最坏的选择
6.2 数据、对象的反对称性
对象与数据及结构之间的二分原理: 过程式代码(使用数据及结构的代码)便于在不改动既有数据及结构的前提下添加新函数,面对对象代码便于在不改动既有函数的前提下添加新类。
反过来也说的通: 过程式代码难以添加新数据结构,因为必须修改所有函数。面对对象代码难以添加新函数,因为必须修改所有类。
6.3得墨忒(tui)耳律
https://en.wikipedia.org/wiki/Law_of_Demeter#In_object-oriented_programming
维基百科的解释
模块不应了解它所操作对象的内部情形。
类C的方法f只应该调用以下对象的方法:
*C
*由f创建的对象;
*作为参数传递给f的对象;
*由C的实体变量持有的对象。
方法不应调用由任何函数返回的对象的方法。换言之,只跟朋友谈话,不与陌生人谈话。
6.3.1 火车失事
6.3.3 隐藏结构
6.4 数据传输对象
最为精炼的数据结构,是一个只有公共变量。没有函数的类,这种函数结构有时被称为数据传送对象,或DTO(Data Transfer Objects)
6.5 小结