软件设计重构秘笈17式-16提取父类
概念
本文中的“提取父类”是指类中有一些字段或方法,你想把它们提取到父类中以便同一继承层次的其它类也可以访问他们,这个和之前的很多重构有异曲同工之处。
意图
提取父类是指类中有一些字段或方法提取到父类以便同一继承层次的其它类也可以访问他们
Dog 类中的eatFood和groom有可能被其他类用到,因为他们都是动物的一些公有性质,所以这个时候我们就会考虑对它进行提炼。
案例
public class Dog {
public void eatFood() {
// eat some food
}
public void groom() {
// perform grooming
}
}
重构
代码如下所示,提取了Animal 方法来封装公用的eatFood和groom类,从而使其他继承了Animal 类的子类都可以使用这两个方法了。
public abstract class Animal {
protected void eatFood(){
// eat some food
}
protected void groom(){
// perform grooming
}
}
public class Dog extends Animal{
}
总结
这个重构是典型的继承用法,很多程序员都会选择这样做,但是要注意正确的使用,不要造成过度使用了继承,如果过度使用了,
请考虑用接口、组合和聚合来实现。