圣诞大减价开始了!

崩溃的层次结构

问题

在类层次结构中,子类实际上与其父类相同。

解决方案

合并子类和超类。

之前
崩溃层次结构-以前
崩溃层次结构-之后

为什么重构

您的程序随着时间的推移而增长,子类和超类实际上已经变得相同。一个特性被从子类中移除,一个方法被移动到超类中……现在你有了两个相似的类。

好处

  • 程序复杂度降低。更少的类意味着需要记住的东西更少,在将来的代码更改中需要担心的易损坏的移动部分也更少。

  • 如果在一个类中较早地定义了方法,则可以更容易地浏览代码。您不需要梳理整个层次结构来找到特定的方法。

什么时候不用

  • 您正在重构的类层次结构是否有多个子类?如果是这样,在重构完成后,剩余的子类应该成为层次结构崩溃的类的继承者。

  • 但请记住,这可能导致违反利斯科夫替换原理.例如,如果您的程序模拟城市交通网络,而您意外地使运输超类进入子类,然后飞机类的继承.哦!

如何重构

  1. 选择哪个类更容易删除:超类还是它的子类。

  2. 使用上拉场而且上拉法如果你决定去掉子类。如果选择消除超类,请执行下推场而且下推法

  3. 将要删除的类的所有使用替换为字段和方法要迁移到的类。通常这将是用于创建类、变量和参数类型以及代码注释中的文档的代码。

  4. 删除空类。

Baidu
map