所谓模版方式模式:把不变的行为搬到超类,去除子类中重复的代码来体现他的优势;当不变的和可变的行为在子类实现中混合在一起的时候,
不变的行为就会在子类中重复实现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就可以帮助子类摆脱重复不变行为的纠缠。

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
    }
}

---