1. 程式人生 > >java常用設計模式8——模板方法模式

java常用設計模式8——模板方法模式

這個設計模式應該是最簡單的設計模式,因為大家平時都在使用,可能只是不知道它還是個設計模式吧

相關程式碼下載:

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();

輸出結果:
template

由上面的例子可以看到,不管遊戲的過程有什麼不同,他們的執行流程都是一樣的,按照模板設定的流程走的。
通過模板方法模式,我們就可以保證邏輯流程不會被子類修改,子類只能夠改變其中某一個步驟的具體實現而已,這樣就可以保證邏輯流程的穩定性和提高可維護性。

在Android原始碼中,典型的模板方法模式就是我們的Activity生命週期啦,相信大家一看就明白。
這個設計模式不僅非常簡單,而且也是非常重要和經常使用的一種設計模式。

以上就是模板方法設計模式的簡單介紹啦(#^ . ^#)