1. 字段上移 两个子类都有相同字段时,将字段移到超类中
2. 函数上移 各个子类都有相同的函数,将该函数移到超类中
3.构造函数本体上移 各个子类中的构造函数本体几乎一致,可以改为在超类中新建一个构造函数,在子类的构造函数中调用它
4.函数下移 超类中的某个函数只与部分子类有关,将这个函数移到相关的子类中
5.字段下移
6.提炼子类 将类的某些特性只被某些实例用到的,放在一个新建的子类中
7.提炼超类 将两个类中的相同部分提炼到一个新建的超类中
8.提炼接口 将两个子类中接口相同的部分提炼到一个独立接口中
9.折叠继承体系 超类和子类无太大区别时,将其合为一体
10.塑造模版函数 将函数中相同的执行函数顺序 移到超类中
11.以委托取代继承 子类只用到超类的一部分,不需要继承其中的数据,可以在子类中新建一个字段保存超类,将子类的函数改为委托超类,去掉继承关系
12. 以继承取代委托 当子类中有较多的委托函数时,修改委托为继承