第12章 处理继承关系
12.1函数上移&12.4函数下移
互为逆重构。
子类中有重复代码就可以考虑上移到父类,而父类中的函数如果只与个别子类有关就可以下移。
12.2字段上移&12.5字段下移
互为逆操作。
子类有类似字段可以考虑上移到父类,父类的字段只在被个别子类用到可以考虑下移。
12.3构造函数本体上移
其实和函数上移差不多,只是构造函数比较特殊专门拿出来说。
12.6以子类取代类型码&12.7移除子类
互为逆重构。
在用类型码来区分时不妨引入子类,两种引入方式:一种是直接把包含类型码的类变为超类,另一种是把类型码本身处理成继承关系。
在子类的工作看起来并没什么用时可以考虑移除,把相关字段搬回父类。
12.8提炼超类
两个类做了相似的事情就可以考虑提炼出超类。
12.9折叠继承体系子类
和超类区别不大的时候可以考虑干掉子类了。
12.10以委托取代子类&12.11以委托取代超类
引入委托(接口),前者是把原来子类作为一个委托的实例引入,后者是原来超类作为一个委托的实例引入。动机是继承的耦合性太强,可以用组合的方式取代继承。
-FIN-