处理概括关系(继承)相关重构手法,共十二条。
- pull up field(字段上移):两个子类拥有相同的字段,将该字段移到超类中。
- pull up method(函数上移):某些函数在各个子类中产生完全相同的效果,将函数移到超类。
- pull up constructor body(构造函数本体上移):各个子类中拥有本体几乎完全一致的构造函数,在超类中新建一个构造函数,并在子类构造函数中调用它。
- push down method(函数下移):超类中某个函数只和部分子类有关,将这个函数移到相关的那些子类中去。
- push down field(字段下移):超类中某个字段只被部分子类用到,将这个字段移到需要它的子类中去。
- extract subclass(提炼子类):类中的某些特性只被某些实例用到,新建一个子类,把上面的部分特性移到子类中。
- extract superclass(提炼超类):两个类有相似的特性,为这两个类建立一个超类,将相似特性移到超类。
- extract interface(提炼接口):若干客户使用类中的同一子集,或者两个类的接口部分相同,将相同的子集提炼到一个独立接口中。
- collapse hierarchy(折叠继承关系):超类和子类区别并不大,将它们合为一体。
- form template method(塑造模板函数):若干子类中相应的某些函数以相同的顺序执行类似的操作,但各个细节不同,把相同操作提炼到一个函数并移到超类。
- replace inheritance with delegation(委托取代继承):某个子类只使用超类中部分接口,或者根本不需要继承而来的数据,用组合方式替代继承——用一个字段保存超类,调整子类函数,然后去掉继承关系。
- replace delegation with inheritance(继承取代委托):在两个类中使用了委托关系,并经常为整个接口编写许多简单的委托函数,移除这些委托,改为继承关系。