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

設(shè)計(jì)模式:模板模式和策略模式混合使用

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

有時(shí)單個(gè)設(shè)計(jì)模式并不能滿足我們的業(yè)務(wù)需求,這個(gè)時(shí)候就要根據(jù)具體的業(yè)務(wù)來混合使用設(shè)計(jì)模式,其中模板模式和策略模式是比較常用的一個(gè)組合。模板模式可以定義這個(gè)邏輯的骨架,策略模式可以豐滿具體細(xì)節(jié)的邏輯。

代碼示例

interface Strategy {
    void execute();
}
 // 策略實(shí)現(xiàn)類1
class StrategyImpl1 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略1");
    }
}
 // 策略實(shí)現(xiàn)類2
class StrategyImpl2 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略2");
    }
}
 // 模板類
abstract class Template {
    // 模板方法,定義了算法的骨架
    public void templateMethod() {
        System.out.println("執(zhí)行模板方法的前置操作");
        executeStrategy();
        System.out.println("執(zhí)行模板方法的后置操作");
    }
     // 抽象方法,由子類實(shí)現(xiàn)具體的策略
    protected abstract void executeStrategy();
}
 // 模板子類1
class TemplateImpl1 extends Template {
    private Strategy strategy;
     public TemplateImpl1(Strategy strategy) {
        this.strategy = strategy;
    }
     @Override
    protected void executeStrategy() {
        strategy.execute();
    }
}
 // 模板子類2
class TemplateImpl2 extends Template {
    private Strategy strategy;
     public TemplateImpl2(Strategy strategy) {
        this.strategy = strategy;
    }
     @Override
    protected void executeStrategy() {
        strategy.execute();
    }
}
 // 測試類
public class Main {
    public static void main(String[] args) {
        Strategy strategy1 = new StrategyImpl1();
        Strategy strategy2 = new StrategyImpl2();
         Template template1 = new TemplateImpl1(strategy1);
        template1.templateMethod();
         Template template2 = new TemplateImpl2(strategy2);
        template2.templateMethod();
    }
}

這個(gè)示例中,我們定義了一個(gè)策略接口和兩個(gè)策略實(shí)現(xiàn)類。然后,我們創(chuàng)建了一個(gè)模板類,其中定義了一個(gè)模板方法和抽象方法。模板方法中包含了算法的骨架,而抽象方法則由子類實(shí)現(xiàn)具體的策略。最后,我們創(chuàng)建了兩個(gè)模板子類,分別使用不同的策略實(shí)現(xiàn)類,并在測試類中進(jìn)行調(diào)用。
這個(gè)示例是比較簡單的示例,具體我們使用的時(shí)候會(huì)更加的抽象,比如會(huì)使用工廠模式把策略類放到工廠中。

優(yōu)劣點(diǎn)

優(yōu)點(diǎn):

  1. 靈活性:通過策略模式,你可以定義多個(gè)不同的策略,并在運(yùn)行時(shí)選擇使用哪個(gè)策略。這使得系統(tǒng)更加靈活,能夠根據(jù)不同的需求選擇合適的策略。

  2. 可擴(kuò)展性:通過模板模式,你可以定義一個(gè)算法的骨架,在模板方法中固定算法的結(jié)構(gòu),而將具體實(shí)現(xiàn)交給子類。這使得系統(tǒng)更容易擴(kuò)展,可以通過添加新的子類來增加新的實(shí)現(xiàn)。

  3. 代碼復(fù)用:模板模式和策略模式都鼓勵(lì)代碼的重用。模板模式中的模板方法可以在多個(gè)子類中共享,而策略模式中的策略可以被多個(gè)上下文對(duì)象共享使用。

  4. 易于維護(hù):通過將算法的不同部分分離出來,模板模式和策略模式使得代碼更加模塊化和可維護(hù)。當(dāng)需要修改某個(gè)算法的某個(gè)部分時(shí),只需要修改相應(yīng)的子類或策略類,而不會(huì)影響到其他部分。

  5. 松耦合:模板模式和策略模式的結(jié)合可以實(shí)現(xiàn)松耦合的設(shè)計(jì)。模板模式中的抽象類和策略模式中的接口使得算法的具體實(shí)現(xiàn)與使用算法的類之間解耦,從而提高了系統(tǒng)的靈活性和可維護(hù)性。

缺點(diǎn):

  1. 增加了項(xiàng)目的復(fù)雜度,對(duì)開發(fā)要求變高,代碼復(fù)雜度增加。
  2. 對(duì)于新人來說,學(xué)習(xí)成本增加。新人只有了解了整個(gè)項(xiàng)目的設(shè)計(jì)才能進(jìn)行開發(fā)。
  3. 類數(shù)量變多,使用多個(gè)設(shè)計(jì)模式就要遵循響應(yīng)的規(guī)范,導(dǎo)致類數(shù)量大大增加,增加維護(hù)成本。

總結(jié)

總的來說,模板模式和策略模式的混合使用可以提供更靈活、可擴(kuò)展、可維護(hù)的代碼結(jié)構(gòu),同時(shí)促進(jìn)代碼的復(fù)用和松耦合設(shè)計(jì)。這種組合可以在需要定義算法骨架的同時(shí),允許動(dòng)態(tài)選擇和切換不同的算法實(shí)現(xiàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-732010.html

到了這里,關(guān)于設(shè)計(jì)模式:模板模式和策略模式混合使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • 【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——策略模式Strategy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——策略模式Strategy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    有各種鴨子,比如野鴨、北京鴨、水鴨等。 鴨子有各種行為,比如走路、叫、飛行等。不同鴨子的行為可能略有不同。要求顯示鴨子的信息 不同的鴨子繼承一個(gè)父類Duck,如果是相同的行為就繼承,不同行為就重寫方法 實(shí)現(xiàn) 【鴨子抽象類】 【野鴨】 【北京鴨】 【玩具鴨】

    2024年02月12日
    瀏覽(35)
  • 設(shè)計(jì)模式的使用——模板方法模式+動(dòng)態(tài)代理模式

    設(shè)計(jì)模式的使用——模板方法模式+動(dòng)態(tài)代理模式

    一、需求介紹 ??現(xiàn)有自己寫的的一套審批流程邏輯,由于代碼重構(gòu),需要把以前的很多業(yè)務(wù)加上審批的功能,再執(zhí)行完審批與原有業(yè)務(wù)之后,生成一個(gè)任務(wù),然后再統(tǒng)一處理一個(gè)任務(wù)(本來是通過數(shù)據(jù)庫作業(yè)去處理的,后來說這個(gè)任務(wù)要馬上去處理,只能去統(tǒng)一添加一個(gè)處

    2024年02月10日
    瀏覽(27)
  • Servlet注解的使用,簡化配置 以及,使用模板方法設(shè)計(jì)模式優(yōu)化oa項(xiàng)目

    Servlet注解的使用,簡化配置 以及,使用模板方法設(shè)計(jì)模式優(yōu)化oa項(xiàng)目

    @ 目錄 Servlet注解的使用,簡化配置 以及,使用模板方法設(shè)計(jì)模式優(yōu)化oa項(xiàng)目 每博一文案 1. web.xml 的缺點(diǎn)分析 2. @WebServlet 注解 2.1 @WebServlet注解當(dāng)中常用的一些屬性的說明 3. 使用模板方法設(shè)計(jì)模式優(yōu)化oa項(xiàng)目 4. 總結(jié): 5. 最后: 分析 oa 項(xiàng)目中的 web.xml 文件 具體的可以移步至:

    2023年04月11日
    瀏覽(29)
  • 使用Servlet完成單表的增刪改查功能以及使用模板方法設(shè)計(jì)模式解決類爆炸問題(重寫service模板方法)

    使用Servlet完成單表的增刪改查功能以及使用模板方法設(shè)計(jì)模式解決類爆炸問題(重寫service模板方法)

    開發(fā)前的準(zhǔn)備 導(dǎo)入sql腳本創(chuàng)建一張部門表 通過綁定屬性資源配置文件的方式創(chuàng)建JDBC的工具類utils/DBUtil 分析系統(tǒng)的功能: 只要這個(gè)操作連接了數(shù)據(jù)庫,就表示一個(gè)獨(dú)立的功能 查看部門列表 , 新增部門 , 刪除部門 , 查看部門詳細(xì)信息 , 跳轉(zhuǎn)到修改頁面(動(dòng)態(tài)的從數(shù)據(jù)庫中獲取信

    2024年02月10日
    瀏覽(21)
  • [設(shè)計(jì)模式]行為型模式-策略模式

    策略模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以互相替換,且算法的變換不會(huì)影響使用算法的客戶。 在項(xiàng)目開發(fā)中,我們經(jīng)常要根據(jù)不同的場景,采取不同的措施,也就是不同的策略。假設(shè)我們需要對(duì)a、b這兩個(gè)整數(shù)進(jìn)行計(jì)算,根據(jù)條件的不同,需要執(zhí)行不

    2024年02月19日
    瀏覽(32)
  • 設(shè)計(jì)模式之策略模式

    策略設(shè)計(jì)模式(Strategy Pattern)是一種行為設(shè)計(jì)模式,它允許在運(yùn)行時(shí)選擇算法的行為。策略模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以互相替換。這種模式使算法的變化獨(dú)立于使用算法的客戶端。 概念 在策略模式中,有以下幾個(gè)關(guān)鍵組成部分: 策略接口(

    2024年01月23日
    瀏覽(50)
  • 設(shè)計(jì)模式——策略模式

    設(shè)計(jì)模式——策略模式

    定義: 該模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以相互替換,且算法的變化不會(huì)影響使用算法的客戶。策略模式屬于對(duì)象行為模式,它通過對(duì)算法進(jìn)行封裝,把便用算法的責(zé)任和算法的實(shí)現(xiàn)分割開來,并委派給不算法進(jìn)象行管理。 主要角色如下: 示例: 假定現(xiàn)在需要

    2024年02月22日
    瀏覽(20)
  • 《設(shè)計(jì)模式》策略模式

    《設(shè)計(jì)模式》策略模式

    定義 : 又叫作 政策模式,將定義的一系列算法封裝起來,使得它們之間可以互相替換,從而讓算法的變化不影響到使用算法的用戶 。 屬于 行為型 模式。 策略模式的組成角色 : 環(huán)境類(Context) : 環(huán)境類是使用算法的角色 ,用來操作策略的上下文環(huán)境,屏蔽高層模塊(客戶

    2024年02月01日
    瀏覽(28)
  • 設(shè)計(jì)模式—策略模式

    設(shè)計(jì)模式—策略模式

    目錄 一、定義 二、特點(diǎn) 三、優(yōu)點(diǎn) 四、缺點(diǎn) 五、實(shí)例 六.涉及到的知識(shí)點(diǎn) 1、一個(gè)類里面有哪些東西? 2、類和實(shí)例 什么是類? 什么是實(shí)例? 什么是實(shí)例化? 3、字段和屬性 什么是字段? 屬性是什么? 屬性怎么用呢? 屬性有什么作用? 靜態(tài)屬性是什么? 屬性和字段的公有

    2024年02月10日
    瀏覽(23)
  • 【設(shè)計(jì)模式】4、策略模式

    【設(shè)計(jì)模式】4、策略模式

    策略模式是一種行為設(shè)計(jì)模式,它能定義一系列算法,把每種算法分別放入獨(dú)立的類中,以是算法的對(duì)象能相互替換。 一天, 你打算為游客們創(chuàng)建一款導(dǎo)游程序。 該程序的核心功能是提供美觀的地圖, 以幫助用戶在任何城市中快速定位。 用戶期待的程序新功能是自動(dòng)路線

    2024年02月20日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包