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