[设计模式] ------ 模板模式
生活随笔
收集整理的這篇文章主要介紹了
[设计模式] ------ 模板模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模板模式
模板模式,定義一個操作中的算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個算法的結構,就可以重定義該算法的某些特定步驟
一般是定義一個抽象類,有抽象方法,有骨架方法,骨架方法中會定義這幾個抽象方法的調用順序。
然后再定義多個實現類,繼承這個抽象類,那么就得覆蓋父類的抽象方法,那么每個實現類調用骨架方法,最終的結構就是按照父類中預先定義好的調用順序,去調用自己實現的各個抽象方法。這就是效果
舉個網上的例子,我覺得寫的挺通俗易懂的:
/***這個抽象類,有三個抽象方法(initGame,startGame,endGame),*一個骨架方法playGame,*骨架方法中主要就是定義了三個抽象方法的執行順序*/ public abstract class GameTemplate {/** 初始化游戲 */abstract void initGame();/** 開始游戲 */abstract void startGame();/** 結束游戲 */abstract void endGame();public final void playGame() {initGame();startGame();endGame();} } /*** 亡者農藥,分別實現三個抽象方法,自己具體實現*/ public class GloryOfKings extends GameTemplate {@Overridevoid initGame() {System.out.println("初始化亡者農藥");}@Overridevoid startGame() {System.out.println("開始亡者農藥");}@Overridevoid endGame() {System.out.println("結束亡者農藥");} } /*** LOL,也分別實現三個抽象方法,自己具體實現*/ public class LOL extends GameTemplate {@Overridevoid initGame() {System.out.println("初始化LOL");}@Overridevoid startGame() {System.out.println("開始LOL");}@Overridevoid endGame() {System.out.println("結束LOL");} } /*** 測試,分別拿到兩個子類,去調用骨架方法playGame* 那么最終的結果就是兩個子類各自實現的三個抽象方法,* 都會按照父抽象類中骨架定義的執行順序依次執行* * 子類在實現的過程中沒有必要定義這些執行順序,因為在父類中都做好了*/ public static void main(String[] args) {GameTemplate gloryOfKings = new GloryOfKings();gloryOfKings.playGame();GameTemplate lol = new LOL();lol.playGame(); }總結
以上是生活随笔為你收集整理的[设计模式] ------ 模板模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: verilog异步复位jk触发器_Ver
- 下一篇: [设计模式] ------ 简单工厂模式