圣诞大减价开始了!

上拉法

问题

子类具有执行类似工作的方法。

解决方案

使方法相同,然后将它们移动到相关的超类中。

之前
拉起方法-前
拉起法-之后

为什么重构

子类彼此独立地成长和发展,导致相同(或几乎相同)的字段和方法。

好处

  • 消除重复代码。如果需要对一个方法进行更改,最好在一个地方进行更改,而不是必须在子类中搜索该方法的所有重复项。

  • 如果由于某种原因,子类重新定义了超类方法,但执行的工作本质上是相同的,也可以使用这种重构技术。

如何重构

  1. 研究超类中的类似方法。如果它们不相同,则将它们格式化为彼此匹配。

  2. 如果方法使用一组不同的参数,请将参数以您希望在超类中看到的形式放置。

  3. 将方法复制到超类。在这里,您可能会发现方法代码使用的字段和方法只存在于子类中,因此在超类中不可用。要解决这个问题,你可以:

    • 对于字段:使用任意一种上拉场或自我封装领域在子类中创建getter和setter;然后在超类中抽象地声明这些getter。

    • 对于方法:使用任意一种上拉法或者在超类中为它们声明抽象方法(注意,如果以前不是抽象类,以后也会变成抽象类)。

  4. 从子类中删除方法。

  5. 检查调用该方法的位置。在某些地方,你可以用超类代替子类的使用。

Baidu
map