重构:改善既有代码的设计 第七章 读书笔记
第7章 封装
7.1 封装记录(Encapsulate Record)
曾用名:以数据类取代记录;
做法:1- 对持有记录的变量使用封装变量,将其封装到一个函数中。 记得为这个函数取一个容易搜索的名字。
2- 创建一个类,将记录包装起来,并将记录变量的值替换为该类的一个实例。然 后在类上定义一个访问函数,用于返回原始的记录。修改封装变量的函数,令 其使用这个访问函数。
7.2 封装集合(Encapsulate Collection)
动机:集合的成员变量可以直接被修改,而封装它的类则全然不知,无法介入。
为避免此种情况,我会在类上提供一些修改集合的方法——通常是“添 加”和“移除”方法。这样就可使对集合的修改必须经过类,当程序演化变大时, 我依然能轻易找出修改点。
7.3 以对象取代基本类型(Replace Primitive with Object)
7.4 以查询取代临时变量(Replace Temp with Query)
7.5 提炼类(Extract Class)
7.6 内联类(Inline Class)
和提炼类相反的操作
7.7 隐藏委托关系(Hide Delegate)
代理操作,还是直接引用
7.8 移除中间人(Remove Middle Man)
和隐藏委托关系是相反的操作
7.9 替换算法(Substitute Algorithm)
使用算法简化代码