软件设计重构秘笈4式-03降低方法
概念
本文中的降低方法和前篇的提升方法整好相反,也就是把个别子类使用到的方法从基类移到子类里面去。
意图
降低方法就是把个别子类使用到的方法从基类移到子类里面去
如下代码所示,Animal 类中的方法fly只有在其子类Bird 中使用,所以最好的方案就是把这个方法移到子类Bird中。
案例
public interface Animal {
public void fly();
}
public class Bird implements Animal{
@Override
public void fly() {
System.out.println("bird fly...");
}
}
public class Penguin implements Animal {
@Override
public void fly() {
throw new UnsupportedOperationException("企鹅不会飞");
}
}
重构
重构后的代码如下,同时如果在父类Animal中如果没有其他的字段或者公用方法的话,
可以考虑把fly方法做成一个接口,从而去掉Animal类。
public interface FlyAble {
public void fly();
}
public class Bird implements FlyAble{
@Override
public void fly() {
System.out.println("bird fly...");
}
}
public class Penguin{
// other function
}