添加功能时, 不应该修改与功能无关的代码, 只管添加功能和通过测试
重构时, 不应该添加新功能, 只应该专注于改进程序的结构
2.2 为何重构
软件开发之中, 代码不可避免地会越来越乱, 如果永远只是为了短期利益修改代码...旧类一般分离后都是类似基类的存在, 可以适当缩紧访问控制.
7.4 将类内联
7.3的反操作, 当一个类没做多少事情时将其特性搬运到基类中.
7.5 隐藏委托关系
客户通过一个委托类来调用另一个对象,...新的类必须要包含老的类的所有功能, 这种新类称为本地扩展, 必须保证在任何使用原类的地方都可以用本地扩展替代
本地扩展的实现有包装类(原类是新类的一个成员)和子类(原类是新类的基类)两种, 通常子类比较好实现...Java实现起来复杂一些
11.11 以委托取代继承
当子类只使用到基类的一部分方法和字段时, 可以去掉继承关系, 用一个字段保存基类, 然后改为委托基类处理所需的功能....成本是需要在基类中增加委托函数, 但一般难度不大
11.12 以继承取代委托
11.11的反面, 当委托了太多基类函数时, 干脆就收了吧.