通常情况:
对于类层次中不同子类里存在的明显和
/
或微妙的重复,我们可以通过
Template Method
重构。对于子类中的方法除了对象创建不足之外其他实现方式都类似,可以应用
Factory Method
引入多态创建。
特殊情况:
如果类的构造方法包含重复代码,通常可以通过应用链构造函数重构去除这种重复。
如果有单独的代码处理一个对象或一组对象,也许可以通过应用
Composite
替换一
/
多之分重构去除重复。
如果类的层次的多个子类实现了自己的
Composite,
而且实现可能完全相同,这时可以使用提取
Composite
重构。
如果对象处理方式区别在于它们接口的不同,应用通过
Adapter
统一接口重构。
如果有条件逻辑用于空对象,而且相同的空逻辑在整个系统中都是重复的,那么可以应用引入
NULL OBJECT
消除重复并简化系统。