所谓模版方式模式:把不变的行为搬到超类,去除子类中重复的代码来体现他的优势;当不变的和可变的行为在子类实现中混合在一起的时候, 不变的行为就会在子类中重复实现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就可以帮助子类摆脱重复不变行为的纠缠。
1.超类
public abstract class BaseTest {
/*
问题是不变的,直接实现了
*/
public void ask(){
System.out.println("which is better? "+answer());
}
//答案是变化的,放在子类里面实现
public abstract String answer();
}
2.子类1
public class ReedTest extends BaseTest {
@Override
public String answer() {
return "reed";
}
}
3.子类2
public class JuneTest extends BaseTest {
@Override
public String answer() {
return "june";
}
}
4.测试类
public class Client {
public static void main(String[] args) {
BaseTest reed = new ReedTest();
BaseTest june = new JuneTest();
reed.ask(); //which is better? reed
june.ask(); //which is better? june
}
}
---