重构——63提炼超类(Extract Superclass)

简介: 提炼超类(Extract Superclass):两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类

提炼超类(Extract Superclass)

两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类

一、动机

减少重复代码

二、做法

1、为原本的类新建一个空白的抽象超类

2、运用Pull Up Field,Pull Up Mehtod,Pull Up Constructor Body逐一将子类的共同元素上移到超类

3、每次上移后,编译并测试

4、检查留在子类中的函数,Extract Method,Pull Up Method,也许可以Form Template Method

5、将所有共同元素都上移到超类后,检查子类的所有用户。如果它们只使用共同接口,你就可以把它们请求的对象改为超类

目录
相关文章
|
算法 Python
Py多重继承、MRO 及 C3算法之间的关系
Py多重继承、MRO 及 C3算法之间的关系
|
PHP 开发者
Trait 代码复用学习路径|学习笔记
快速学习 Trait 代码复用学习路径
重构——62提炼子类(Extract Subclass)
提炼子类(Extract Subclass):类中的某些特性只被某些实例用到;新建一个子类,将上面所说的那一部分特性移到子类中
1388 0
重构——67以委托取代继承(Replace Inheritance with Delegation)
以委托取代继承(Replace Inheritance with Delegation) 1、某个子类只使用了超类接口中的一部分,或是根本不需要继承而来的数据 2、在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系
2256 0
重构——68以继承取代委托(Replace Delegation with Inheritance)
以继承取代委托(Replace Delegation with Inheritance):你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系;让委托类继承受托类
1174 0
重构——12提炼类(Extract Class)
提炼类(Extract Class):并发和事务的风险;某个类做了两个类做的事;建立一个新类,将相关的字段和函数从旧类搬移到新类
1963 0
|
Java
重构——64提炼接口(Extract Interface)
提炼接口(Extract Interface):若干客户使用类接口中的同一子集,或者两个类的接口有部分相同;将相同的子类提炼到一个独立接口中
1518 0
重构——69梳理并分解继承体系(Tease Apart Inheritance)
梳理并分解继承体系(Tease Apart Inheritance):某个继承体系同时承担两项责任;建立两个继承体系,并通过委托关系让其中一个可以调用另一个
1062 0
重构——1提炼函数(Extract Method)
提炼函数(Extract Method):你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。
1259 0