成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java通俗易懂系列設計模式之模板模式

瀏覽:3日期:2022-08-13 18:37:09

實際開發中常常會遇到,代碼骨架類似甚至相同,只是具體的實現不一樣的場景。例如:流程都有開啟、編輯、駁回、結束。每個流程都包含這幾個步驟,不同的是不同的流程實例它們的內容不一樣。共享單車都是先開鎖、騎行、上鎖、付款。這些大的步驟固定,不同的是每個實例的具體實現細節不一樣。這些類似的業務我們都可以使用模板模式實現。為什么要使用模板模式以及如何使用呢?

介紹

定義:在模板模式(Template Pattern)中,一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬于行為型模式。

意圖:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟

主要解決:一些方法通用,卻在每一個子類都重新寫了這一方法。 何時使用:有一些通用的方法。 如何解決:將這些通用算法抽象出來。 關鍵代碼:在抽象類實現,其他步驟在子類實現。實現

我們以生活中買菜做飯的例子來寫個Demo,燒飯一般都是買菜、洗菜、烹飪、裝盤四大過程。中國自古有八大菜系,制作方式肯定都避不開這四個過程。那在模板模式中如何實現呢?創建一個抽象類,它的模板方法被設置為 final。為防止惡意操作,一般模板方法都加上 final 關鍵詞。

public abstract class AbstractCookingService { //買菜 protected abstract void shopping(); //清洗 protected abstract void wash(); //烹飪 protected abstract void cooking(); //裝盤 protected abstract void dishedUp(); public final void process() {shopping();wash();cooking();dishedUp(); }}

創建實現了上述抽象類的子類。// 徽菜烹飪

/** * 徽菜制作大廚 */public class HuiCaiChef extends AbstractCookingService { @Override protected void shopping() {System.out.println('買菜:新鮮魚一條,紅辣椒五兩'); } @Override protected void wash() {System.out.println('清洗:紅椒洗凈切片,魚頭半分'); } @Override protected void cooking() {System.out.println('烹飪:魚頭水蒸,辣椒過油'); } @Override protected void dishedUp() {System.out.println('裝盤:用長形盤子裝盛'); }}

// 川菜烹制

/** * 川菜制作大廚 */public class HuiCaiChef extends AbstractCookingService { @Override protected void shopping() {System.out.println('買菜:黑豬肉一斤,蒜頭5個'); } @Override protected void wash() {System.out.println('清洗:豬肉洗凈,蒜頭去皮'); } @Override protected void cooking() {System.out.println('烹飪:大火翻炒,慢火悶油'); } @Override protected void dishedUp() {System.out.println('裝盤:深碗盛起,熱油澆拌'); }}

使用 TemplatePatternDemo 類執行模板方法 process() 來演示烹飪的定義方式。

public class TemplatePatternDemo { public static void main(String[] args) {System.out.println('----------川菜制作------------');AbstractCookingService chuanCaiService = new ChuanCaiChef();chuanCaiService.process();System.out.println('-----------徽菜制作-----------');AbstractCookingService huiCaiService = new HuiCaiChef();huiCaiService.process(); }}

執行程序,輸出結果:

----------川菜制作------------

買菜:新鮮魚一條,紅辣椒五兩

清洗:紅椒洗凈切片,魚頭半分

烹飪:魚頭水蒸,辣椒過油

裝盤:用長形盤子裝盛

-----------徽菜制作-----------

買菜:黑豬肉一斤,蒜頭5個

清洗:豬肉洗凈,蒜頭去皮

烹飪:大火翻炒,慢火悶油

從以上實例可以看出,其實模板模式也沒什么高深莫測的,簡單來說就是三大步驟:

創建一個抽象類,定義幾個抽象方法和一個final修飾的模板方法,而模板方法中設定了抽象方法的執行順序或邏輯。 無論子類有多少個,只需要繼承該抽象類,實現父類的抽象方法重寫自己的業務。 根據不同的需求創建不同的子類實現,每次調用的地方只需調用模板方法,即可完成特定的模板流程。總結

從以上的分析和Demo我們可以看到,模板方法提高了我們的代碼的可維護性和可擴展性。有優點也有缺點。優點:

封裝不變部分,擴展可變部分。 提取公共代碼,便于維護。 行為由父類控制,子類實現。

缺點:

每一個不同的實現都需要一個子類來實現,導致類的個數增加,使得系統更加龐大。

使用場景:

有多個子類共有的方法,且邏輯相同。 重要的、復雜的方法,可以考慮作為模板方法。

以上就是Java通俗易懂系列設計模式之模板模式的詳細內容,更多關于Java設計模式的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久精工是国产品牌吗| 欧美久久高跟鞋激| 色欧美88888久久久久久影院| 日韩免费看的电影| 日韩精品国产精品| 亚洲一区bb| 亚洲蜜桃精久久久久久久| 97se亚洲国产综合在线| 日韩视频一区二区三区在线播放 | 日本欧美韩国一区三区| 国产精品尤物| 亚洲一区免费视频| 亚洲精选在线| 亚洲男人的天堂av| 激情一区二区三区| 综合在线观看色| 亚洲高清视频在线观看| 国产精品久久久久久亚洲毛片| 99九九99九九九视频精品| 日韩亚洲欧美综合| 国产999精品久久久久久| 欧美疯狂做受xxxx富婆| 日韩电影免费在线| 久久久久久亚洲精品不卡4k岛国| 亚洲一区二区三区影院| 国产精品一区二区在线观看| 夜夜嗨av一区二区三区中文字幕| 在线一区欧美| 亚洲福利视频三区| 久久亚洲一区二区| 理论片日本一区| 欧美日韩视频在线第一区| 激情另类小说区图片区视频区| 欧美日韩精品欧美日韩精品一| 国产一区二区三区香蕉 | 欧美国产综合色视频| 欧美日韩一区在线播放| 国产精品色一区二区三区| 99久久免费国产| 国产亚洲成年网址在线观看| 欧美一区激情| 国产精品天美传媒| 亚洲日本黄色| 亚洲成人综合在线| 美女日韩在线中文字幕| 日韩成人一级片| 欧美日韩精品电影| 国产成人午夜视频| 久久久噜噜噜久噜久久综合| 欧美日本中文| 亚洲免费观看高清在线观看| 欧美亚洲网站| 蜜桃视频在线观看一区二区| 欧美性猛片aaaaaaa做受| 国产麻豆精品久久一二三| 日韩三级电影网址| 欧美一区综合| 亚洲欧美日韩国产另类专区| 久久国产成人| 国产一区福利在线| 久久久久久久久蜜桃| 韩日欧美一区| 无吗不卡中文字幕| 欧美一区二区三区视频在线| 91麻豆精品视频| ...xxx性欧美| 色偷偷久久人人79超碰人人澡| 国产一区三区三区| 精品国产一二三| 亚洲免费大片| 蜜臀av一区二区在线免费观看| 欧美一区二区三区男人的天堂| av成人免费在线| 亚洲色图清纯唯美| 日本高清不卡aⅴ免费网站| 国产高清久久久| 亚洲国产精华液网站w| 性刺激综合网| 国产乱码字幕精品高清av| 2020日本不卡一区二区视频| 9色国产精品| 国产在线视频一区二区| 中文字幕精品一区二区精品绿巨人 | 欧美承认网站| 午夜影视日本亚洲欧洲精品| 这里是久久伊人| 激情综合视频| 国产剧情av麻豆香蕉精品| 国产精品免费网站在线观看| 亚洲一区二区三区涩| 老司机精品视频在线| 久久久久99精品国产片| 国产精品日韩一区二区| 国产成人高清视频| 欧美激情中文字幕一区二区| 麻豆久久久9性大片| 成人av免费在线观看| 亚洲免费在线看| 欧美性大战久久久久久久蜜臀| 99精品在线观看视频| 亚洲成人在线免费| 精品国产一区二区三区久久影院 | 色综合天天视频在线观看| 亚洲最新视频在线观看| 欧美一区二区三区免费观看视频 | 欧美高清性hdvideosex| 国产精品久久| 国产综合成人久久大片91| 综合久久久久久| 欧美军同video69gay| 激情婷婷亚洲| 国产不卡在线一区| 亚洲一区二区三区四区五区黄| 欧美成人猛片aaaaaaa| 国产欧美综合一区二区三区| 国产91丝袜在线播放0| 亚洲一区二区三区影院| 欧美大片在线观看| 欧美亚洲免费高清在线观看| 不卡视频一二三| 天堂久久久久va久久久久| 国产欧美一区二区三区鸳鸯浴| 欧美三级电影网| 99视频一区| 91尤物视频在线观看| 麻豆精品一区二区av白丝在线| 国产精品久久久久久户外露出| 欧美欧美欧美欧美首页| 亚洲一区二区在线看| 午夜视频精品| 国产不卡视频在线观看| 性久久久久久久久久久久| 欧美国产精品专区| 欧美日韩一区二区欧美激情| 亚洲国产一区二区三区在线播| 久久电影网电视剧免费观看| 亚洲欧美精品午睡沙发| 精品国免费一区二区三区| 91国产成人在线| 国产欧美日韩一级| 欧美极品一区| 国产不卡视频在线播放| 美女一区二区三区在线观看| 一区二区三区四区精品在线视频 | 精品国产露脸精彩对白| 欧美日韩你懂的| 午夜宅男久久久| 欧美午夜电影在线观看| www.成人在线| 国产成人在线视频免费播放| 看片网站欧美日韩| 亚洲www啪成人一区二区麻豆| 国产精品丝袜在线| 久久麻豆一区二区| 欧美xxxxx裸体时装秀| 欧美丰满少妇xxxxx高潮对白| 91久久精品一区二区| 亚洲欧美日韩综合一区| 激情欧美一区二区三区| 成人一道本在线| 免费一区二区视频| 成人国产免费视频| 丝袜亚洲精品中文字幕一区| 欧美一区免费视频| 欧美日韩综合久久| 成人国产亚洲欧美成人综合网 | 天天射综合影视| 久久精品在线免费观看| 69堂亚洲精品首页| 欧美一级专区| 一区二区三区精品视频| 国产一区二区中文| 精品国产麻豆免费人成网站| 久久99久久99精品免视看婷婷| 99亚洲伊人久久精品影院红桃| 欧美日韩国产一级片| 欧美三级网页| 亚洲激情成人| 青青草成人在线观看| 欧美一区二区三区日韩视频| 你懂的网址国产 欧美| 国产精品美女视频| 欧美在线|欧美| 播五月开心婷婷综合| 亚洲免费观看高清完整版在线观看| 国产精品免费人成网站| 国产精品系列在线| 欧美国产成人在线| 91精品国产综合久久国产大片| 日韩影视精彩在线| 亚洲美女免费在线| 亚洲一区二区三区免费视频| 亚洲成人av一区二区| 中文字幕亚洲成人| 亚洲免费在线播放| 欧美精品一区二区三区四区| 久久精品一区四区| 国产精品国产三级国产aⅴ入口| 综合久久国产九一剧情麻豆| 亚洲精品你懂的|