模板方法模式,定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
我們來看一個考試試卷答題的例子。
1、考試試卷
public abstract class TestPager {
public void testQuestion1(){
System.out.println("楊過得到,後來給了郭靖,練成倚天劍、屠龍刀的玄鐵可能是[]a.球磨鑄鐵 b.馬口鐵 c.告訴合金鋼 d.碳素纖維");
System.out.println("答案"+answer1());
}
public void testQuestion2(){
System.out.println("楊過、程英、陸無雙剷除了情花,造成[]a.使這種植物不再害人 b.使一種珍惜物種滅絕 c.破壞了那個生物圈的生態平衡 d.造成該地區沙漠化");
System.out.println("答案"+answer2());
}
public abstract String answer1();
public abstract String answer2();
}
2、學生A抄寫的試卷public class TestPagerA extends TestPager{
@Override
public String answer1() {
return "a";
}
@Override
public String answer2() {
return "b";
}
}
3、學生B抄寫的試卷public class TestPagerB extends TestPager{
@Override
public String answer1() {
return "c";
}
@Override
public String answer2() {
return "d";
}
}
4、測試public class Test {
public static void main(String[] args) {
System.out.println("學生A的試卷");
TestPager studentA = new TestPagerA();
studentA.testQuestion1();
studentA.testQuestion2();
System.out.println("學生B的試卷");
TestPager studentB = new TestPagerB();
studentB.testQuestion1();
studentB.testQuestion2();
}
}