崩溃的层次结构
问题
在类层次结构中,子类实际上与其父类相同。
解决方案
合并子类和超类。
之前

后

为什么重构
您的程序随着时间的推移而增长,子类和超类实际上已经变得相同。一个特性被从子类中移除,一个方法被移动到超类中……现在你有了两个相似的类。
好处
程序复杂度降低。更少的类意味着需要记住的东西更少,在将来的代码更改中需要担心的易损坏的移动部分也更少。
如果在一个类中较早地定义了方法,则可以更容易地浏览代码。您不需要梳理整个层次结构来找到特定的方法。
什么时候不用
您正在重构的类层次结构是否有多个子类?如果是这样,在重构完成后,剩余的子类应该成为层次结构崩溃的类的继承者。
但请记住,这可能导致违反利斯科夫替换原理.例如,如果您的程序模拟城市交通网络,而您意外地使
运输
超类进入车
子类,然后飞机
类的继承车
.哦!