1 符号和症状2 病因3 治疗4 疗效5 不适用的情况 1 符号和症状两个类有相同的功能,但是不同的方法名。 2 病因创建类的程序员不知道已经有一个功能等价的类存在。 3 治疗从类的共性方面获取接口: 重命名方法:让所有类中的方法名相同。移动方法、添加参数、参数化方法:让方法的签名和实现相同。如果类之间只有部分功能重叠,试试抽取超类。这种情况下,现有的类会成为子类。确定使用哪种治疗方法之后,可能能够删除一些类。 4 疗效摆脱了不必要的代码重复 代码变得更可读,更容易理解(不需要去猜,为什么要创建第二个类,执行与第一个类完全相同的功能)。 5 不适用的情况有时候合并类是不可能的,或者很难。比如说,这些类在不同的库中,各个库有自有版本的类。