1. 程式人生 > >第十話-模板方法模式

第十話-模板方法模式

主類 分享 system 封裝 pap 廣泛 alt 我們 urn

一個mo子裏刻出來的?NO,NO,NO應該是一個mu子裏立馬出來的。今天看了模板方法模式,一起學習了。
一、什麽是模板方法模式?
定義:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。使得子類能夠不改變一個算法的結構就可以重定義該算法的某些特定步驟。
請大家細細品味定義,模板方法模式,父類僅僅考慮骨架,子類僅僅考慮血肉。

有一些不必父類做的事情要放到子類中去。


二、模板方法模式有哪些應用?
應用太廣泛了。或許你已經悄悄的用了N年了。由於此模式能夠封裝不變部分。擴展可變部分。所以,我們要提取公共部分代碼。便於維護。你想到的基本都能夠使用此模式。


三、一個小樣例

技術分享

父類(抽象類;包含基本模板方法和抽象方法。基本模板方法是骨架;抽象方法是留給子類實現的。)
TestPaper.java
public abstract class TestPaper {
public void question1(){
System.out.println("問題1:請問世界上最大的湖是什麽湖?");
System.out.println("答案1:"+answer1());
}

public void question2(){
System.out.println("問題2:你所知道的最大數?");
System.out.println("答案2:"+answer2());
}

protected abstract String answer1();
protected abstract String answer2();

}
詳細子類
Student1.java
public class Student1 extends TestPaper {


@Override
protected String answer1() {
// TODO Auto-generated method stub
return "蘇必利爾湖";
}


@Override
protected String answer2() {
// TODO Auto-generated method stub
return "3";
}


}


Student2.java


public class Student2 extends TestPaper {


@Override
protected String answer1() {
// TODO Auto-generated method stub
return "裏海";
}


@Override
protected String answer2() {
// TODO Auto-generated method stub
return "1";
}


}


測試主類:


public class Main {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPaper paper1 = new Student1();
TestPaper paper2 = new Student2();
System.out.println("學生1的試卷:");
paper1.question1();
paper1.question2();
System.out.println("學生2的試卷:");
paper2.question1();
paper2.question2();

}


}


四、小結
忘了是在哪個大牛博客裏看到的了。假設你僅僅想學習一個設計模式,那就學習模板方法模式吧。


模板方法模式非常easy,但有用性強,而且使用廣泛。

所以,學習吧。

嘿嘿。下一話:迪米特法則

第十話-模板方法模式