1 符号和症状
子类仅使用从父类继承的某些方法和属性时,类层次就不太好。不必要的方法可能没有用,或者应该重新定义,排除例外。
2 病因
仅仅为了重用超类中的代码,而创建类之间的继承关系,但是超类和子类完全不同。
3 治疗
- 如果继承没有意义,子类与超类没有任何共同之处,可以用委托代替继承,从而排除继承。
- 如果继承是合适的,需要在子类中摆脱不需要的字段和方法。从父类中抽取子类需要的所有字段和方法,放到一个新的子类中,让两个类(父类和子类)继承新的子类,也就是抽取超类。
4 疗效
改进代码清洁度和组织性。不需要奇怪为什么Dog
从Chair
继承(虽然它们都有4条腿)。