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

設(shè)計模式二十三:模板方法模式(Template Method Pattern)

這篇具有很好參考價值的文章主要介紹了設(shè)計模式二十三:模板方法模式(Template Method Pattern)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

定義了一個算法的框架,將算法的具體步驟延遲到子類中實現(xiàn)。這樣可以在不改變算法結(jié)構(gòu)的情況下,允許子類重寫算法的特定步驟以滿足自己的需求

模版方法使用場景

  1. 算法框架固定,但具體步驟可以變化:當你有一個算法的整體結(jié)構(gòu)是固定的,但其中某些步驟的實現(xiàn)可能因情境不同而變化時,可以使用模板方法模式。這使得你可以在不改變整體結(jié)構(gòu)的情況下,通過子類來定制特定步驟的實現(xiàn)。
  2. 避免代碼重復(fù):當你有多個類中的方法具有相似的步驟,但實現(xiàn)細節(jié)有所不同時,可以將這些相似的步驟提取到一個抽象類的模板方法中,從而避免代碼重復(fù)。
  3. 框架或庫的設(shè)計:在框架或庫的設(shè)計中,通常會定義一些通用的算法框架,但具體實現(xiàn)需要留給使用者來完成。模板方法模式在這種情況下可以幫助定義框架的核心邏輯,同時留下擴展點供使用者進行自定義。
  4. 生命周期方法:當需要確保對象在特定的生命周期階段執(zhí)行特定步驟時,模板方法模式可以派上用場。比如在資源管理、初始化和銷毀等場景下。
  5. 代碼的擴展和維護:模板方法模式遵循開閉原則,當需要添加新的功能或修改算法的部分步驟時,只需要新增或修改子類,而不需要改動抽象類的代碼,從而提升了代碼的可擴展性和可維護性。

模版方法主要角色

  1. 抽象類(Abstract Class):定義了一個模板方法,它是一個包含算法框架的方法,其中的具體步驟可以是抽象方法或已實現(xiàn)的方法。抽象類還可以包含一些通用方法,這些方法在模板方法中被使用。
  2. 具體子類(Concrete Subclass):繼承抽象類并實現(xiàn)其中的抽象方法,從而完成算法的具體步驟。每個具體子類可以根據(jù)需要實現(xiàn)自己的邏輯。

模版方法java代碼實例

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

    abstract void brew();

    abstract void addCondiments();

    void boilWater() {
        System.out.println("Boiling water");
    }

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

class Coffee extends CaffeineBeverage {
    void brew() {
        System.out.println("Dripping coffee through filter");
    }

    void addCondiments() {
        System.out.println("Adding sugar and milk");
    }
}

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

    void addCondiments() {
        System.out.println("Adding lemon");
    }
}

public class TemplateMethodPatternDemo {
    public static void main(String[] args) {
        CaffeineBeverage coffee = new Coffee();
        coffee.prepareRecipe();

        CaffeineBeverage tea = new Tea();
        tea.prepareRecipe();
    }
}

在這個示例中,CaffeineBeverage 是抽象類,定義了制作咖啡因飲料的模板方法 prepareRecipe(),以及具體步驟中的通用方法。Coffee 和 Tea 是具體子類,分別實現(xiàn)了 brew() 和 addCondiments() 方法。在主程序中,我們創(chuàng)建了咖啡和茶的實例,并調(diào)用了它們的 prepareRecipe() 方法,實現(xiàn)了整個制作過程

模版方法優(yōu)缺點

優(yōu)點:

  1. 代碼復(fù)用性
    模板方法模式鼓勵將相同的代碼邏輯放在抽象類中,從而避免在多個具體類中重復(fù)實現(xiàn)相同的代碼,提高了代碼的復(fù)用性。
  2. 高層邏輯抽象
    模板方法將高層的算法邏輯抽象到抽象類中,使得具體子類只需要關(guān)注特定步驟的實現(xiàn),而無需考慮整體算法的結(jié)構(gòu)。
  3. 固定算法框架
    模板方法定義了一個算法的框架,確保了整個算法的結(jié)構(gòu)一致性。這有助于遵循最佳實踐并減少錯誤。
  4. 易于維護
    由于相同的代碼邏輯集中在抽象類中,修改算法邏輯或添加新特性只需要在一個地方進行修改,減少了維護的復(fù)雜性。
  5. 靈活性
    具體子類可以通過重寫特定步驟來實現(xiàn)個性化需求,從而在保持整體框架不變的情況下增加靈活性。

缺點:文章來源地址http://www.zghlxwxcb.cn/news/detail-671943.html

  1. 限制子類的自由度
    盡管模板方法模式提供一定程度的靈活性,但子類的擴展通常被限制在模板定義的框架內(nèi)。這可能導(dǎo)致某些情況下子類需要強行適應(yīng)框架,而不是完全自由地設(shè)計。
  2. 增加類的數(shù)量
    使用模板方法模式通常會引入抽象類和具體子類,可能會增加類的數(shù)量,增加了代碼的復(fù)雜性。
  3. 不適合每個情況
    并非所有算法都適合使用模板方法模式。如果算法的步驟變化較小或步驟變化較大,使用其他模式可能更合適。
  4. 復(fù)雜性增加
    盡管模板方法模式可以幫助整理算法的結(jié)構(gòu),但在某些情況下可能會引入復(fù)雜性,尤其是當算法本身變得復(fù)雜時

到了這里,關(guān)于設(shè)計模式二十三:模板方法模式(Template Method Pattern)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 設(shè)計模式(二十二)模板方法

    設(shè)計模式(二十二)模板方法

    定義一個操作中算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類不改變一個算法的結(jié)構(gòu)即可重定義該算法的特定步驟。模板方法是一種類行為型模式 模板方法模式結(jié)構(gòu)比較簡單,其核心是抽象類和其中的模板方法的設(shè)計,包含以下兩個角色: 1、AbstractClas

    2024年01月22日
    瀏覽(19)
  • 軟件設(shè)計模式系列之二十四——模板方法模式

    軟件設(shè)計模式系列之二十四——模板方法模式

    在軟件設(shè)計領(lǐng)域,設(shè)計模式是一組被反復(fù)使用、多次實踐驗證的經(jīng)典問題解決方案。其中,模板方法模式是一種行為型設(shè)計模式,用于定義一個算法的骨架,將算法中的某些步驟延遲到子類中實現(xiàn),從而使子類可以重新定義算法的某些特定步驟,同時保持算法的整體結(jié)構(gòu)不變

    2024年02月08日
    瀏覽(21)
  • 設(shè)計模式第15講——模板模式(Template)

    設(shè)計模式第15講——模板模式(Template)

    模板模式是一種基于 繼承 實現(xiàn)的設(shè)計模式,它是 行為型 的模式。 主要思想是將定義的算法抽象成一組步驟,在抽象類種定義算法的骨架,把具體的操作留給子類來實現(xiàn)。 通俗地說,模板模式就是將某一行為制定一個框架,然后子類填充細節(jié)。比如說做菜,流程通常就是洗

    2024年02月11日
    瀏覽(18)
  • 二十三種設(shè)計模式:工廠模式

    工廠模式是一種創(chuàng)建型設(shè)計模式,它提供了一種創(chuàng)建對象的最佳方式,而無需暴露對象的創(chuàng)建邏輯。工廠模式通過使用工廠方法來解決這個問題,該方法將對象的創(chuàng)建委托給子類來處理。 在工廠模式中,我們定義一個抽象工廠類,它包含一個抽象的工廠方法,該方法返回一個

    2024年02月07日
    瀏覽(23)
  • 二十三種設(shè)計模式第十三篇--享元模式

    二十三種設(shè)計模式第十三篇--享元模式

    享元模式,主要就是一種池化方案,主要用于創(chuàng)建對象的數(shù)量,以減少內(nèi)存占用和提高性能。這種類型的設(shè)計模式屬于 結(jié)構(gòu)型模式 ,它提供了減少對象數(shù)量從而改善應(yīng)用所需的對象結(jié)構(gòu)的方式。 享元模式,嘗試重用現(xiàn)有的同類對象,如果未找到相同匹配的對象,那么就去創(chuàng)

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

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

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

    2024年02月14日
    瀏覽(23)
  • 二十三種設(shè)計模式(待更)

    二十三種設(shè)計模式(待更)

    資料來源于老師講解以及大佬的設(shè)計模式倉庫 zhengqingya 將對象和類按某種布局組成更大的結(jié)構(gòu),并同時保持結(jié)構(gòu)的靈活和?效。 1.適配器 適配器就是將原先無法直接使用的某個接口或者類通過適配器模式轉(zhuǎn)換為可以使用的接口或者類。將一個類的接口轉(zhuǎn)換成客戶希望的另外

    2024年02月08日
    瀏覽(18)
  • 設(shè)計模式(二十三)訪問者

    設(shè)計模式(二十三)訪問者

    表示一個作用于某對象結(jié)構(gòu)中的各個元素的操作。訪問者模式讓你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。訪問者模式是一種對象行為型模式 訪問者模式是一種較為復(fù)雜的行為型模式,它包含訪問者和被訪問元素兩個主要組成部分,這些被訪問的元素

    2024年02月19日
    瀏覽(21)
  • 軟件設(shè)計模式系列之二十三——策略模式

    軟件設(shè)計模式系列之二十三——策略模式

    策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它允許在運行時動態(tài)選擇算法的行為。這意味著你可以定義一系列算法,將它們封裝成獨立的策略對象,然后根據(jù)需要在不修改客戶端代碼的情況下切換這些算法。策略模式有助于解決問題領(lǐng)域中不同行為的變化和擴展,同時

    2024年02月08日
    瀏覽(21)
  • 設(shè)計模式(二十三)——解釋器模式(Interpreter )

    設(shè)計模式(二十三)——解釋器模式(Interpreter )

    解釋器模式(Interpreter ) 實現(xiàn)了一個表達式接口,該接口解釋一個特定的上下文 應(yīng)用 編譯器,正則表達式,SQL解析 實現(xiàn) 實現(xiàn)一個一位數(shù)的加法運算

    2024年02月11日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包