1 符号和症状

两个类有相同的功能,但是不同的方法名。
10 代码坏味之滥用面向对象-4:用不同的接口代替类 - 图1

2 病因

创建类的程序员不知道已经有一个功能等价的类存在。

3 治疗

从类的共性方面获取接口:

  • 重命名方法:让所有类中的方法名相同。
  • 移动方法添加参数参数化方法:让方法的签名和实现相同。
  • 如果类之间只有部分功能重叠,试试抽取超类。这种情况下,现有的类会成为子类。
  • 确定使用哪种治疗方法之后,可能能够删除一些类。

    4 疗效

  • 摆脱了不必要的代码重复

  • 代码变得更可读,更容易理解(不需要去猜,为什么要创建第二个类,执行与第一个类完全相同的功能)。
    10 代码坏味之滥用面向对象-4:用不同的接口代替类 - 图2

    5 不适用的情况

    有时候合并类是不可能的,或者很难。比如说,这些类在不同的库中,各个库有自有版本的类。