重构类关系-Push Down Method函数下移四

重构类关系-Push Down Method函数下移四

1.函数下移

1.1.使用场景

超类中的某个函数只与部分(而非全部)子类有关。将这个函数移到相关的那些子类去。

Push Down Method (328)与Pull Up Method (322)恰恰相反。当我有必要把某些行为从超类移至特定的子类时,我就使用Push Down Method (328),它通常也只在这种时候有用。使用Extract Subclass (330)之后你可能会需要它。

1.2.如何做

  • 在所有子类中声明该函数,将超类中的函数本体复制到每一个子类函数中。
  • 你可能需要将超类的某些字段声明为protected,让子类函数也能够访问它们。如果日后你也想把这些字段下移到子类,通常就可以那么做;否则应该使用超类提供的访问函数。如果访问函数并非public,你得将它声明为protected。
  • 删除超类中的函数。
  • 你可能必须修改调用端的某些变量声明或参数声明,以便能够使用子类。
  • 如果有必要通过一个超类对象访问该函数,或你不想把该函数从任何子类中移除,再或超类是抽象类,那么你就可以在超类中
  • 该函数声明为抽象函数。
  • 编译,测试。
  • 将该函数从所有不需要它的那些子类中删掉。
  • 编译,测试。

1.3.示例

Employee 父类中的getQuota() 方法只在某个子类中单独使用,因此将它下移到子类中。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/129750440