java常用設計模式8——模板方法模式
阿新 • • 發佈:2018-12-04
這個設計模式應該是最簡單的設計模式,因為大家平時都在使用,可能只是不知道它還是個設計模式吧
相關程式碼下載:
GitHub - GodisGod/DesignPatternStudy: 設計模式學習demo
https://github.com/GodisGod/DesignPatternStudy
模板方法其實就是封裝一個固定的流程,就像一個模板,開頭是什麼,中間是什麼,結尾是什麼,框架都搭好,然後在這個框架內進行具體的操作,不管操作有什麼區別,整體的執行流程始終不會改變。
舉例:
我們玩兩款遊戲,這兩款遊戲都要經過建立角色,設定角色名字,開始遊戲和通關遊戲四個步驟,雖然遊戲內容不盡相同,但是流程都是一樣的,所以我們可以使用模板方法模式。
程式碼示例:
public abstract class PlayGame {
protected void createRole() {
Log.i("LHD", "建立角色");
}
protected void setName() {
Log.i("LHD", "設定名字");
}
protected void startGame() {
Log.i("LHD", "開始遊戲");
}
protected void finishGame() {
Log. i("LHD", "通關遊戲");
}
public void play(){
createRole();
setName();
startGame();
finishGame();
}
}
建立好模板以後就可以開始建立兩個遊戲類了:
遊戲一:Heroes
public class Heroes extends PlayGame{
@Override
protected void createRole() {
Log.i("LHD","我建立了一個角色(#^.^#)" );
}
}
遊戲二:Knight
public class Knight extends PlayGame {
@Override
protected void createRole() {
Log.i("LHD", "建立遊戲角色");
}
@Override
protected void setName() {
Log.i("LHD", "設定角色名字");
}
}
使用:
Heroes heroes = new Heroes();
heroes.play();
Log.i("LHD", "-----------------我開始玩另一個遊戲啦-----------------");
Knight knight = new Knight();
knight.play();
輸出結果:
由上面的例子可以看到,不管遊戲的過程有什麼不同,他們的執行流程都是一樣的,按照模板設定的流程走的。
通過模板方法模式,我們就可以保證邏輯流程不會被子類修改,子類只能夠改變其中某一個步驟的具體實現而已,這樣就可以保證邏輯流程的穩定性和提高可維護性。
在Android原始碼中,典型的模板方法模式就是我們的Activity生命週期啦,相信大家一看就明白。
這個設計模式不僅非常簡單,而且也是非常重要和經常使用的一種設計模式。
以上就是模板方法設計模式的簡單介紹啦(#^ . ^#)