第十一章、处理概括关系(即继承关系)
有一批重构手法专门用来处理概括关系(即继承关系),主要是将函数上下移动于继承体系之中字段上移和方法上移都用于将特性向继承体系的上端移动,字段下移和方法下移则将特性向继承体系的下端移动。构造函数比较难以向上拉动,因此专门有一个构造函数本体上移处理它,一般不会将构造函数往下推,因为以工厂函数取代构造函数通常更管用。
11.1、字段上移
什么时候用?
两个子类拥有相同的字段
怎么用?
将该字段上移
具体步骤:
1、针对待提升字段,检查它们的所有被引用点,确认它们以同样的方式被使用。
2、如果这些字段的名称不同,先将它们改名,使每一个名称都和你想为超类字段取的名称相同。编译,测试。
3、在超类中新建一个字段。(如果子类的字段是private的,必须将超类的字段声明为protected,这样子类才能访问)
4、移除子类中的字段。编译,测试。
5、考虑对超类的新建字段使用自封装字段
11.2、函数上移
什么时候用?
有些函数,在各个子类中产生完全相同的效果
怎么用?
将该函数移至超类
具体步骤:
1、检查待提升函数,确定它们完全一致。(如果有些函数看上去做了相同的事,但并不完全一致,可以使用替换算法让它们变得一致)
2、如果待提升函数的签名不同,将那些签名都修改为想要在超类中使用的签名
3、在超类新建一个函数&#x