《重构:改善既有代码的设计(第2版)》 ePUBw.COM 51个笔记
如果超类的一些函数对子类并不适用,就说明我不应该通过继承来获得超类的功能
动机
Replace Superclass with Delegate
12.11
用状态(State)模式或者策略(Strategy)模式取代子类
继承这张牌只能打一次
动机
Replace Subclass with Delegate
12.10
一个类与其超类已经没多大差别
动机
Collapse Hierarchy
12.9
如果我看见两个类在做相似的事,可以利用基本的继承机制把它们的相似之处提炼到超类。
动机
Extract Superclass
12.8
子类所支持的变化可能会被搬移到别处,甚至完全去除,这时子类就失去了价值
动机
Remove Subclass
12.7
如果有几个函数都在根据类型码的取值采取不同的行为,多态就显得特别有用。引入子类之后,我可以用以多态取代条件表达式(272)来处理这些函数。
动机
Replace Type Code with Subclasses
12.6
如果某个字段只被一个子类(或者一小部分子类)用到,就将其搬移到需要该字段的子类中。
动机
Push Down Field
12.5
超类中的某个函数只与一个(或少数几个)子类有关,那么最好将其从超类中挪走,放到真正关心它的子类中去
动机
Push Down Method
12.4
各个子类中的函数有共同行为
动机
Pull Up Constructor Body
12.3
提升到超类中去
被使用的方式很相似
拥有重复特性
动机
12.2
然后应用函数上移
最简单的办法就是先分别对这些函数应用函数参数化
Pull Up Field
这就是最显而易见的函数上移适用场合。
如果某个函数在各个子类中的函数体都相同
动机
Pull Up Method
12.1
◆ 第12章 处理继承关系
第12章 处理继承关系