多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 章节十一 处理概括关系 有一批重构手法专门用来处理「概括关系」(generalization ;译注:这里指的是class 继承」这档事),其中主要是将函数(methods)上下移动于继承体系之中。 Pull Up Field 和 Pull Up Method 都用于将class 特性向继承体系的上端移动,Push Down Method 和 Push Down Field 则将class 特性向继承体系的下端移动。构造函数比较难以向上拉动,因此专门有一个Pull Up Constructor Body 处理它。我们不会将构造函数往下推,因为 Replace Constructor with Factory Method 通常更管用。 如果有若干函数大体上相同,只在细节上有所差异,可以使用Form Template Method 将它们的共同点和不同点分开。 除了在继承体系中移动class 特性之外,你还可以建立新class ,改变整个继承体系。 Extract Subclass、Extract Superclass 和 Extract Interface 都是这样的重构手法,它们在继承体系的不同位置构造出新元素。如果你想在型别系统(type system)中标示(mark)一小部分函数, Extract Interface 特别有用。如果你发现继承体系中的某些classes 没有存在必要,可以使用 Collapse Hierarchy 将它们移除。 有时候你会发现继承并非最佳选择,你真正需要的其实是委托(delegation),那么, Replace Inheritance with Delegation 可以帮助你把继承改为委托。有时候你又会想要做反向修改,此时就可使用Replace Delegation with Inheritance。