日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java通俗易懂系列設(shè)計(jì)模式之模板模式

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

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

介紹

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

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

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

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

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

創(chuàng)建實(shí)現(xiàn)了上述抽象類的子類。// 徽菜烹飪

/** * 徽菜制作大廚 */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('裝盤:用長(zhǎng)形盤子裝盛'); }}

// 川菜烹制

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

使用 TemplatePatternDemo 類執(zhí)行模板方法 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(); }}

執(zhí)行程序,輸出結(jié)果:

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

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

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

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

裝盤:用長(zhǎng)形盤子裝盛

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

買菜:黑豬肉一斤,蒜頭5個(gè)

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

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

從以上實(shí)例可以看出,其實(shí)模板模式也沒什么高深莫測(cè)的,簡(jiǎn)單來說就是三大步驟:

創(chuàng)建一個(gè)抽象類,定義幾個(gè)抽象方法和一個(gè)final修飾的模板方法,而模板方法中設(shè)定了抽象方法的執(zhí)行順序或邏輯。 無論子類有多少個(gè),只需要繼承該抽象類,實(shí)現(xiàn)父類的抽象方法重寫自己的業(yè)務(wù)。 根據(jù)不同的需求創(chuàng)建不同的子類實(shí)現(xiàn),每次調(diào)用的地方只需調(diào)用模板方法,即可完成特定的模板流程。總結(jié)

從以上的分析和Demo我們可以看到,模板方法提高了我們的代碼的可維護(hù)性和可擴(kuò)展性。有優(yōu)點(diǎn)也有缺點(diǎn)。優(yōu)點(diǎn):

封裝不變部分,擴(kuò)展可變部分。 提取公共代碼,便于維護(hù)。 行為由父類控制,子類實(shí)現(xiàn)。

缺點(diǎn):

每一個(gè)不同的實(shí)現(xiàn)都需要一個(gè)子類來實(shí)現(xiàn),導(dǎo)致類的個(gè)數(shù)增加,使得系統(tǒng)更加龐大。

使用場(chǎng)景:

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

以上就是Java通俗易懂系列設(shè)計(jì)模式之模板模式的詳細(xì)內(nèi)容,更多關(guān)于Java設(shè)計(jì)模式的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本成人在线一区| 狂野欧美性猛交xxxx| 麻豆91小视频| 国产精品美女在线观看直播| 欧美日韩亚洲一区三区| 欧美日本精品| 国产精品xxx在线观看| 国产精品一区二区三区av麻| 少妇精品久久久一区二区| 久久亚洲欧洲| 亚洲综合另类| 自拍自偷一区二区三区| 免费观看在线综合色| 亚洲女人av| 亚洲一区二区三区免费在线观看 | 亚洲欧洲午夜| 国产免费成人| 日韩av电影一区| 日韩.com| 中文字幕在线视频久| 亚洲精品1区| 青草综合视频| 色婷婷综合网| 中文精品视频| 欧美日韩国产综合网| 中文字幕av一区二区三区人| 国产精品s色| 亚洲精品一区二区在线看| 综合一区av| 精品伊人久久久| 98精品久久久久久久| 亚洲国产日韩欧美在线| 亚洲深深色噜噜狠狠爱网站| 日韩av一区二区三区| 日本午夜大片a在线观看| 久久久久久自在自线| 亚洲三级毛片| 国产精品国产一区| 免费看欧美美女黄的网站| 久久国内精品视频| 日韩在线卡一卡二| 成人精品久久| 久久国内精品| 亚洲一区国产| 超碰超碰人人人人精品| 日本午夜精品一区二区三区电影 | 毛片在线网站| 欧美精品国产| 久久亚洲国产精品一区二区| 高清不卡亚洲| 日韩av二区在线播放| 国产亚洲精品久久久久婷婷瑜伽| 国产精品久久亚洲不卡| 手机精品视频在线观看| 久久精品官网| 天堂а√在线最新版中文在线| 欧美国产先锋| 国产乱论精品| 欧美日韩99| 欧美一级久久| 欧美精品国产一区| 久久激情五月婷婷| 国产高清日韩| 精品资源在线| 福利一区视频| 日韩欧美视频专区| 国产精品一区二区美女视频免费看| 国产一区成人| 亚洲影院天堂中文av色| 亚洲人成高清| 欧美在线91| 日韩在线成人| 久久国产尿小便嘘嘘| 麻豆国产精品| 国产成人免费精品| 99成人超碰| 亚洲欧美视频一区二区三区| 亚洲三级在线| 国产乱论精品| 国产精品不卡| 国产综合精品一区| 国产精品va| 久久久精品网| 亚洲97av| 精品久久久网| 亚洲在线网站| 国产欧美91| 国产成人免费| 欧美午夜精彩| 国产精品观看| 欧美特黄视频| 国产精品欧美日韩一区| 97在线精品| 蜜桃视频一区二区三区在线观看| 日韩av一区二区在线影视| 成人日韩av| 亚洲福利专区| 国产高清视频一区二区| av中文资源在线资源免费观看| 国产亚洲精品自拍| 国产一区二区久久久久| 蜜桃一区二区三区在线| 欧美日韩国产观看视频| 亚洲一区二区成人| 美女av在线免费看| 国产美女亚洲精品7777| 狠狠爱成人网| 国产精久久久| 日韩在线观看一区| 国产精品99久久免费| 老司机精品在线| 亚洲另类视频| 老鸭窝毛片一区二区三区| 欧美成人综合| 精品欧美一区二区三区在线观看| 国产精品伊人| 国产精品欧美在线观看| 成人日韩在线观看| 欧美久久天堂| 悠悠资源网久久精品| 一区二区国产在线| 日韩精品欧美精品| 少妇精品久久久一区二区三区| 日韩国产一二三区| 精品国产乱码久久久| 欧美综合二区| 午夜欧美精品久久久久久久| 视频一区欧美日韩| 亚洲一级淫片| 国产另类在线| 香蕉久久精品| 天海翼亚洲一区二区三区| 日韩成人精品一区二区三区| 午夜天堂精品久久久久| 国产美女久久| 精品一区二区三区的国产在线观看| 先锋影音久久久| 99精品一区| 免费在线视频一区| 亚洲一区欧美激情| 日韩精品国产欧美| 日本aⅴ精品一区二区三区| 激情综合婷婷| 黄色亚洲精品| 久久一区精品| 亚洲最新av| 久久久久久网| av中文字幕在线观看第一页 | 国产精品videossex| 精品国产乱码久久久| 色爱av综合网| 亚洲尤物av| 九九九精品视频| 国产精品qvod| 激情欧美亚洲| 国产乱论精品| 999国产精品视频| 欧美日韩99| 亚洲福利久久| 欧美三级第一页| 精品日韩毛片| 日韩av一级片| 国产亚洲一区二区手机在线观看| 美女国产精品| 精品视频在线观看网站| 久久夜夜操妹子| 美国欧美日韩国产在线播放| 久久99视频| 日韩欧美看国产| 日韩高清国产一区在线| 久久久精品网| 7777精品| 一本一道久久a久久| 国产成人精品一区二区三区视频| 中文字幕视频精品一区二区三区| 精品国产乱码久久久久久樱花| re久久精品视频| 日韩免费福利视频| 日韩精品免费视频人成| 国产99久久| 久久精品资源| 91精品国产一区二区在线观看| 亚洲高清影视| 国产精品1luya在线播放| 久久国产精品久久久久久电车 | 久久亚州av| 亚洲精品影视| 久久婷婷亚洲| 成人在线视频区| 国产精品宾馆| 亚洲涩涩在线| 天堂网av成人| 青青草精品视频| 日韩高清三区| 日韩毛片一区| 只有精品亚洲| 亚洲精品国模| 91久久视频| 蜜桃伊人久久| 综合一区av|