設計模式:模版模式

準備:

  • 抽象類和模版:
public abstract class Game {
    abstract void init();

    abstract void start();

    abstract void end();

    /**
     * 爲防止惡意操作,一般模板方法都加上 final 關鍵詞。
     */
    public final void template() {
        init();
        start();
        end();
    }
}
  • 實現類:
public class LOL extends Game {
    private static final String NAME = "LOL";

    @Override
    void init() {
        System.out.println(NAME + "  init");
    }

    @Override
    void start() {
        System.out.println(NAME + "  start");
    }

    @Override
    void end() {
        System.out.println(NAME + "  end");
    }
}

public class DNF extends Game {

    private static final String NAME = "DNF";

    @Override
    void init() {
        System.out.println(NAME + "  init");
    }

    @Override
    void start() {
        System.out.println(NAME + "  start");
    }

    @Override
    void end() {
        System.out.println(NAME + "  end");
    }
}

測試:

public class TemplateTest {

    public static void main(String[] args) {
        DNF dnf = new DNF();
        dnf.template();
        System.out.println("=============");
        LOL lol = new LOL();
        lol.template();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章