多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### Push Down Method(函数下移) superclass 中的某个函数只与部分(而非全部)subclasses 有关。 将这个函数移到相关的那些subclasses 去。 ![](https://box.kancloud.cn/2016-08-15_57b1b5e6b47cb.gif) **动机(Motivation)** Push Down Method 恰恰相反于 Pull Up Method 。当我有必要把某些行为从superclass 移至特定的subclass 时,我就使用Push Down Method,它通常也只在这种时候有用。使用Extract Subclass 之后你可能会需要它。 **作法(Mechanics)** - 在所有subclass 中声明该函数,将superclass 中的函数本体拷贝到每一个subclass 函数中。 - 你可能需要将superclass 的某些值域声明为protected,让subclass 函数也能够访问它们。如果日后你也想把这些值域下移到subclasses , 通常就可以那么做;否则应该使用superclass 提供的访问函数(accessors)。如果访问函数并非public ,你得将它声明为protected 。 - 删除superclass 中的函数。 - 你可能必须修改调用端的某些变量声明或参数声明,以便能够使用subclass 。 - 如果有必要通过一个superclass 对象访问该函数,或如果你不想把该函数从任何subclass 中移除,或如果superclass 是抽象类,那么你就可以在superclass 中把该函数声明为抽象函数。 - 编译,测试。 - 将该函数从所有不需要它的那些subclasses 中删掉。 - 编译,测试。