六、下置类属性
相对于上一种重构方式“提升类属性”,现在是“下置类属性”,即当一个父类中的某个属性字段不是对于每一个子类都必需时,就应该将其下置到具体使用到该属性的子类中去,以避免该属性被所有子类继承下来。
重构前的代码例子:
abstract class Task{ protected String resolution;}
class BugTask extends Task {
}
class FeatureTask extends Task {
}
在这个例子中,我们知道 FeatureTask 类不需要具有表明 resolution (解决方案)的类属性,它只为 BugTask 类所必需(代码中有 Bug 还不改的话会是怎样的后果?)。因此,只需要很简单地将 resolution 属性下置到子类 BugTask 中即可。郑州建站推广 网站策划 网站建设 网站开发 SEO优化 网站推广 SEO 网站SEO 清软国际 东方清软 国信清软重构后的代码:
abstract class Task{//protected String resolution;}
class BugTask extends Task { private String resolution;}
class FeatureTask extends Task {
}
小结:
在前面这几种重构方式中,我认为都是与抽象出共性,或者是确定特殊子类的特殊行为、属性相关的。这四种重构方式,都表明了在设计时最好先分析、评判好各个类的职责(行为、方法)、个性(属性、字段),这样就能够避免在后期引起一系列麻烦的重构。
相对于上一种重构方式“提升类属性”,现在是“下置类属性”,即当一个父类中的某个属性字段不是对于每一个子类都必需时,就应该将其下置到具体使用到该属性的子类中去,以避免该属性被所有子类继承下来。
重构前的代码例子:
abstract class Task{ protected String resolution;}
class BugTask extends Task {
}
class FeatureTask extends Task {
}
在这个例子中,我们知道 FeatureTask 类不需要具有表明 resolution (解决方案)的类属性,它只为 BugTask 类所必需(代码中有 Bug 还不改的话会是怎样的后果?)。因此,只需要很简单地将 resolution 属性下置到子类 BugTask 中即可。郑州建站推广 网站策划 网站建设 网站开发 SEO优化 网站推广 SEO 网站SEO 清软国际 东方清软 国信清软重构后的代码:
abstract class Task{//protected String resolution;}
class BugTask extends Task { private String resolution;}
class FeatureTask extends Task {
}
小结:
在前面这几种重构方式中,我认为都是与抽象出共性,或者是确定特殊子类的特殊行为、属性相关的。这四种重构方式,都表明了在设计时最好先分析、评判好各个类的职责(行为、方法)、个性(属性、字段),这样就能够避免在后期引起一系列麻烦的重构。