国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《HeadFirst設(shè)計(jì)模式(第二版)》第八章代碼——模板方法模式

這篇具有很好參考價(jià)值的文章主要介紹了《HeadFirst設(shè)計(jì)模式(第二版)》第八章代碼——模板方法模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

代碼文件目錄:

《HeadFirst設(shè)計(jì)模式(第二版)》第八章代碼——模板方法模式,HeadFirst設(shè)計(jì)模式(第二版)源碼,設(shè)計(jì)模式,模板方法模式,java

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-655335.html

CaffeineBeverage
package Chapter8_TemplateMethodPattern;

/**
 * @Author 竹心
 * @Date 2023/8/17
 **/

public abstract class CaffeineBeverage {
    final void prepareRecipe(){
        boilWater();
        brew();
        pourInCup();

        //這里使用鉤子customerWantsCondiments()來(lái)讓子類在算法過(guò)程中介入
        if(customerWantsCondiments()){
            addCondiments();
        }
    }

    abstract void brew();//沖泡
    abstract void addCondiments();//添加配料

    void boilWater(){
        //如果不想子類更改這些方法的實(shí)現(xiàn),可以使用final
        System.out.println("Boiling Water!");
    }

    void pourInCup(){
        System.out.println("Pouring into cup");
    }

    //添加掛鉤
    boolean customerWantsCondiments(){
        return true;
    }
}
Coffee
package Chapter8_TemplateMethodPattern;

/**
 * @Author 竹心
 * @Date 2023/8/17
 **/

public class Coffee extends CaffeineBeverage{

    public void brew() {
        System.out.println("Dripping Coffee through filter!");
    }

    public void addCondiments(){
        System.out.println("Adding Sugar and Milk!");
    }

    public boolean customerWantsCondiments(){
        //這里實(shí)行相關(guān)代碼決定客戶是否需要添加配料
        return true;
    }
}
Tea
package Chapter8_TemplateMethodPattern;

/**
 * @Author 竹心
 * @Date 2023/8/17
 **/

public class Tea extends CaffeineBeverage{
     public void brew(){
         System.out.println("Steeping the tea!");
     }

     public void addCondiments(){
         System.out.println("Adding Lemon!");
     }

     public boolean customerWantsCondiments(){
         //這里實(shí)行相關(guān)代碼決定客戶是否需要添加配料
         return true;
     }
}
notes
模板方法模式

案例:
    咖啡和茶這兩種飲料的制作方法如下:
    1.把水煮沸
    2.把咖啡粉末(茶葉)加入水中
    3.把咖啡(茶)倒進(jìn)杯子
    4.添加配料(檸檬、糖、奶等)

    其中只有第2、4步是有所不同的(但也僅僅是涉及的對(duì)象不同),所以將四個(gè)步驟
    抽取出來(lái)作為父類CaffeineBeverage中的方法,然后在父類中實(shí)現(xiàn)1、3兩個(gè)步驟,
    而2、4則由其子類(Tea, Coffee)來(lái)實(shí)現(xiàn)

模板方法:定義一個(gè)算法步驟,允許子類提供一個(gè)或者多個(gè)步驟的實(shí)現(xiàn)。

優(yōu)點(diǎn):
1.提高代碼復(fù)用
2.可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法中的某些步驟,可維護(hù)性好(用案例來(lái)說(shuō),
  就是如果要添加新的飲料,可以直接繼承該父類,實(shí)現(xiàn)其獨(dú)特的原料配方即可)

好萊塢原則:
    高層組件主動(dòng)決定控制底層組件,但是底層組件絕對(duì)不能調(diào)用高層組件。
    模板方法模式(還有工廠模式、觀察者模式)采用了這一原則

模板方法模式的應(yīng)用:
    常用的Arrays.sort()方法就涉及到模板方法模式,sort()可以對(duì)所有的對(duì)象數(shù)組
    進(jìn)行排序,前提是該數(shù)組的對(duì)象類型實(shí)行了接口Comparable下的compareTo()
    方法。這里的sort()就是模板方法中的模板(遵循了模板方法模式的原則)。

到了這里,關(guān)于《HeadFirst設(shè)計(jì)模式(第二版)》第八章代碼——模板方法模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《HeadFirst設(shè)計(jì)模式(第二版)》第九章代碼——迭代器模式

    ? ? ? ? 一家早餐店和一家午餐點(diǎn)準(zhǔn)備合并在一起,兩家的點(diǎn)菜的菜單實(shí)現(xiàn)方式如下: ? ? ? ? 首先,他們的菜單選項(xiàng)都基于同一個(gè)類: 菜單選項(xiàng)類 早餐店初始菜單 午餐店初始菜單: 可以得知:前者使用List來(lái)實(shí)現(xiàn),后者使用數(shù)組來(lái)實(shí)現(xiàn)。 這時(shí)候,如果不采取任何方法加以

    2024年02月12日
    瀏覽(20)
  • 《HeadFirst設(shè)計(jì)模式(第二版)》第十一章代碼——代理模式

    《HeadFirst設(shè)計(jì)模式(第二版)》第十一章代碼——代理模式

    代碼文件目錄: ?RMI: MyRemote MyRemoteClient MyRemoteImpl 能夠遠(yuǎn)程監(jiān)控的糖果機(jī): 在上一章的代碼的基礎(chǔ)上做一些修改 GumballMachine GumballMachineRemote GumballMachineTestDrive GumballMonitor GumballMonitorTestDrive 五個(gè)狀態(tài)類: 同樣的修改:

    2024年02月12日
    瀏覽(29)
  • 《HeadFirst設(shè)計(jì)模式(第二版)》第五章代碼——單例模式

    《HeadFirst設(shè)計(jì)模式(第二版)》第五章代碼——單例模式

    代碼文件目錄: ?初始版本: 三種解決多線程問(wèn)題的方法: Notes:

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式第八講:常見(jiàn)重構(gòu)技巧 - 去除多余的if else

    設(shè)計(jì)模式第八講:常見(jiàn)重構(gòu)技巧 - 去除多余的if else

    最為常見(jiàn)的是代碼中使用很多的if/else,或者switch/case;如何重構(gòu)呢?方法特別多,本文是設(shè)計(jì)模式第八講,帶你學(xué)習(xí)其中的技巧。 通常業(yè)務(wù)代碼會(huì)包含這樣的邏輯:每種條件下會(huì)有不同的處理邏輯。比如兩個(gè)數(shù)a和b之間可以通過(guò)不同的操作符(+,-,*,/)進(jìn)行計(jì)算,初學(xué)者通

    2024年02月10日
    瀏覽(18)
  • 第八章結(jié)構(gòu)型模式—裝飾者模式

    第八章結(jié)構(gòu)型模式—裝飾者模式

    結(jié)構(gòu)型模式描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu),有以下兩種: 類結(jié)構(gòu)型模式 :采用繼承機(jī)制來(lái)組織接口和類。 對(duì)象結(jié)構(gòu)型模式 :釆用組合或聚合來(lái)組合對(duì)象。 由于組合關(guān)系或聚合關(guān)系比繼承關(guān)系耦合度低,滿足 “合成復(fù)用原則”,所以對(duì)象結(jié)構(gòu)型模式比類結(jié)

    2024年02月05日
    瀏覽(19)
  • 第八章LVS中的DR模式詳解

    第八章LVS中的DR模式詳解

    ? 總結(jié): (1)客戶端發(fā)送請(qǐng)求到 Director Server(負(fù)載均衡器),請(qǐng)求的數(shù)據(jù)報(bào)文(源 IP 是 CIP,目標(biāo) IP 是 VIP)到達(dá)內(nèi)核空間。 (2)Director Server 和 Real Server 在同一個(gè)網(wǎng)絡(luò)中,數(shù)據(jù)通過(guò)二層數(shù)據(jù)鏈路層來(lái)傳輸。 (3)內(nèi)核空間判斷數(shù)據(jù)包的目標(biāo)IP是本機(jī)VIP,此時(shí)IPVS(IP虛擬服務(wù)器

    2024年02月12日
    瀏覽(29)
  • 《微服務(wù)架構(gòu)設(shè)計(jì)模式》第二章

    《微服務(wù)架構(gòu)設(shè)計(jì)模式》第二章

    軟件架構(gòu)的定義 看一下大佬是怎么說(shuō)的: 計(jì)算機(jī)系統(tǒng)的軟件架構(gòu)是構(gòu)建這個(gè)系統(tǒng)所需要的一組結(jié)構(gòu),包括軟件元素、它們之間的關(guān)系以及兩者的屬性。 --Bass等著《Documenting Software Architectures:Views and Beyond》 這個(gè)定義將軟件分解為元素和元素之間的關(guān)系兩個(gè)部分,就像一輛汽車(chē)

    2024年02月09日
    瀏覽(22)
  • 二十三種設(shè)計(jì)模式第二十篇--備忘錄模式

    二十三種設(shè)計(jì)模式第二十篇--備忘錄模式

    備忘錄模式,備忘錄模式屬于行為型模式。它允許在不破壞封裝的情況下捕獲和恢復(fù)對(duì)象的內(nèi)部狀態(tài)。 保存一個(gè)對(duì)象的某個(gè)狀態(tài),以便在適當(dāng)?shù)臅r(shí)候恢復(fù)對(duì)象,該模式通過(guò)創(chuàng)建一個(gè)備忘錄對(duì)象來(lái)保存原始對(duì)象的狀態(tài),并將其存儲(chǔ)在一個(gè)負(fù)責(zé)管理備忘錄的負(fù)責(zé)人對(duì)象中。 備忘

    2024年02月14日
    瀏覽(23)
  • 二十三種設(shè)計(jì)模式第二十四篇--訪問(wèn)者模式(完結(jié)撒花)

    二十三種設(shè)計(jì)模式第二十四篇--訪問(wèn)者模式(完結(jié)撒花)

    在訪問(wèn)者模式(Visitor Pattern)中,我們使用了一個(gè)訪問(wèn)者類,它改變了元素類的執(zhí)行算法。 通過(guò)這種方式,元素的執(zhí)行算法可以隨著訪問(wèn)者改變而改變。 這種類型的設(shè)計(jì)模式屬于行為型模式。根據(jù)模式,元素對(duì)象已接受訪問(wèn)者對(duì)象,這樣訪問(wèn)者對(duì)象就可以處理元素對(duì)象上的

    2024年02月14日
    瀏覽(24)
  • 《微服務(wù)架構(gòu)設(shè)計(jì)模式》第二章 服務(wù)的拆分策略

    《微服務(wù)架構(gòu)設(shè)計(jì)模式》第二章 服務(wù)的拆分策略

    內(nèi)容總結(jié)自《微服務(wù)架構(gòu)設(shè)計(jì)模式》 軟件架構(gòu)的定義:計(jì)算機(jī)系統(tǒng)的軟件架構(gòu)是構(gòu)建這個(gè)系統(tǒng)所需要的一組結(jié)構(gòu),包括軟件元素、他們之間的關(guān)系以及兩者的屬性(Bass等著) 其實(shí)質(zhì)是應(yīng)用程續(xù)的架構(gòu)將軟件分解為元素(element)和這些元素之間的關(guān)系(relation)。由于這兩個(gè)

    2024年02月09日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包