您好,登錄后才能下訂單哦!
小編給大家分享一下Java中模板模式怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
封裝不變部分,擴展可變部分。
提取公共代碼,便于維護(hù)。
行為由父類控制,子類實現(xiàn)。
每一個不同的實現(xiàn)都需要一個子類來實現(xiàn),導(dǎo)致類的個數(shù)增加,使得系統(tǒng)更加龐大。
1.有多個子類共有的方法,且邏輯相同。
2.重要的、復(fù)雜的方法,可以考慮作為模板方法。
假設(shè)一個場景,我們在玩游戲的時候,都需要初始化加載游戲,然后開始游戲,最后結(jié)束游戲,這像是一套模板一樣的操作,但是具體的實現(xiàn)方法卻不同,例如:LOL 游戲與 CF 游戲的加載資源肯定不同,游戲的內(nèi)容也不同。
package com.asurplus.common.template; /** * 游戲抽象類 */ public abstract class Game { // 初始化游戲 abstract void init(); // 開始游戲 abstract void start(); // 結(jié)束游戲 abstract void end(); // 模板 public final void play() { // 初始化游戲 init(); // 開始游戲 start(); // 結(jié)束游戲 end(); } }
package com.asurplus.common.template; import lombok.extern.slf4j.Slf4j; /** * LOL游戲 */ @Slf4j public class LolGame extends Game { @Override void init() { log.info("初始化 LOL 游戲"); } @Override void start() { log.info("LOL 游戲開始"); } @Override void end() { log.info("LOL 游戲結(jié)束"); } }
package com.asurplus.common.template; import lombok.extern.slf4j.Slf4j; /** * CF游戲 */ @Slf4j public class CfGame extends Game { @Override void init() { log.info("初始化 CF 游戲"); } @Override void start() { log.info("CF 游戲開始"); } @Override void end() { log.info("CF 游戲結(jié)束"); } }
package com.asurplus.common.template; /** * 模板模式 */ public class TestMain { public static void main(String[] args) { // LOL 游戲 Game lolGame = new LolGame(); lolGame.play(); System.out.println(); // CF 游戲 Game cfGame = new CfGame(); cfGame.play(); } }
輸出結(jié)果
可以看出,一套模板,可以有多個實現(xiàn)方式,從而實現(xiàn)了我們的工廠模式。
看完了這篇文章,相信你對“Java中模板模式怎么用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。