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

設(shè)計模式行為型——模板模式

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

目錄

模板模式的定義

模板模式的實現(xiàn)

模板模式角色

模板模式類圖

模板模式舉例

模板模式代碼實現(xiàn)

模板模式的特點(diǎn)

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

缺點(diǎn)

使用場景

注意事項

實際應(yīng)用


模板模式的定義

????????模板模式(Template Pattern)屬于行為型設(shè)計模式,又叫模版方法模式(Template Method Pattern),是指定義一個算法的骨架,并允許子類為一個或多個步驟提供實現(xiàn)。模板模式使得子類可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法的某些步驟。

????????模板模式,其主要的的思想就是做一個模板,提供給客戶端進(jìn)行調(diào)用。除去生活中我們經(jīng)常用到的簡歷模板、合同模板等等,Java中也有很經(jīng)典的模板使用,那就是Servlet,HttpService類提供了一個service()方法,這個方法調(diào)用七個do方法中的一個或幾個,完成對客戶端調(diào)用的響應(yīng)。這些do方法需要由HttpServlet的具體則由子類提供。

模板模式的實現(xiàn)

模板模式角色

  1. 抽象模板角色(Abstract Template):定義了一個或多個抽象操作,即定義了算法的骨架,以便讓子類實現(xiàn)。這些抽象操作叫做基本操作,它們是一個頂級邏輯的組成步驟;定義并實現(xiàn)了一個模板方法。這個模板方法一般是一個具體方法,它給出了一個頂級邏輯的骨架,而邏輯的組成步驟在相應(yīng)的抽象操作中,推遲到子類實現(xiàn)。頂級邏輯也有可能調(diào)用一些具體方法。
  2. 具體模板角色(Concrete Template):實現(xiàn)父類所定義的一個或多個抽象方法,即不同的對象的具體實現(xiàn)細(xì)節(jié),它們是一個頂級邏輯的組成步驟;每一個抽象模板角色都可以有任意多個具體模板角色與之對應(yīng),而每一個具體模板角色都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現(xiàn),從而使得頂級邏輯的實現(xiàn)各不相同。

模板模式類圖

設(shè)計模式行為型——模板模式,設(shè)計模式,設(shè)計模式,模板方法模式

模板模式舉例

????????相信大家都吃過水果蛋糕,不過無論造型如何變化,不變的有兩種東西:“奶油”和“面包”。其余的水果材料隨意搭配,就湊成了各式各樣的水果蛋糕?;谶@個場景,寫一個案例,進(jìn)一步了解下模板模式;創(chuàng)建三個類:Cake(蛋糕)、StrawberryCake(草莓蛋糕)、MangoCake(芒果蛋糕)。最后創(chuàng)建一個Client類,實現(xiàn)這個制作蛋糕的調(diào)用過程。

模板模式代碼實現(xiàn)

抽象模版角色

package com.common.demo.pattern.template;

/**
 * @author Evan Walker  昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 抽象模版角色 蛋糕
 * @date 2023/08/09 13:44:38
 */
public abstract class Cake {
    /**
     * 制作
     */
    public void make() {
        System.out.println("開始準(zhǔn)備材料。");
        bread();
        cream();
        fruit();
        System.out.println("經(jīng)過一系列的操作。");
        System.out.println("制作完成。");
    }

    /**
     * 準(zhǔn)備面包
     */
    public void bread() {
        System.out.println("準(zhǔn)備材料:面包");
    }

    /**
     * 準(zhǔn)備奶油
     */
    public void cream() {
        System.out.println("準(zhǔn)備材料:奶油");
    }

    /**
     * 準(zhǔn)備水果
     */
    protected abstract void fruit();

}

具體模版角色

package com.common.demo.pattern.template;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 具體模版角色:芒果蛋糕
 * @date 2023/08/09 13:46:07
 */
public class MangoCake extends Cake{
    @Override
    protected void fruit() {
        System.out.println("準(zhǔn)備材料:芒果");
    }
}
package com.common.demo.pattern.template;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 具體模版角色:草莓蛋糕
 * @date 2023/08/09 13:46:07
 */
public class StrawberryCake extends Cake{
    @Override
    protected void fruit() {
        System.out.println("準(zhǔn)備材料:草莓");
    }
}

測試代碼

package com.common.demo.pattern.template;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 測試類
 * @date 2023/08/09 13:48:06
 */
public class Test {

    public static void main(String[] args) {
        Cake c1 = new MangoCake();
        c1.make();

        Cake c2 = new StrawberryCake();
        c2.make();
    }

}

測試截圖?

設(shè)計模式行為型——模板模式,設(shè)計模式,設(shè)計模式,模板方法模式

模板模式的特點(diǎn)

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

  1. 提高代碼復(fù)用性:模板模式將公共的算法提取到父類中,子類只需關(guān)注實現(xiàn)自己特定的步驟,提高了代碼的復(fù)用性。
  2. 保持一致的算法結(jié)構(gòu):模板模式定義了算法的框架,保持了一致的算法結(jié)構(gòu),使得代碼更加整潔和可讀。
  3. 靈活性:子類可以根據(jù)需要重寫或擴(kuò)展父類中的某些算法步驟,從而實現(xiàn)定制化的算法。

缺點(diǎn)

  1. 某些步驟的實現(xiàn)可能受限:由于模板模式是通過繼承來實現(xiàn)的,因此可能會限制某些步驟的具體實現(xiàn)方式。
  2. 增加了類的數(shù)量:使用模板模式會增加父類和子類的數(shù)量,可能導(dǎo)致類的層次結(jié)構(gòu)較為復(fù)雜。

使用場景

  1. 當(dāng)有一組相似的算法,其具體實現(xiàn)步驟相同或類似,只有某些步驟的實現(xiàn)有差異時,可以考慮使用模板模式。
  2. 當(dāng)需要保持一致的算法結(jié)構(gòu),提高代碼復(fù)用性和可維護(hù)性時,可以使用模板模式。

注意事項

  1. 抽象出公共的算法框架:在使用模板模式時,需要抽象出算法的公共框架,并將可變的部分延遲到子類中實現(xiàn)。
  2. 父類對于子類的要求:父類中定義的模板方法可以使用鉤子方法來約束子類的行為。
  3. 為防止惡意操作:一般模板方法都加上 final 關(guān)鍵詞

實際應(yīng)用

  1. 數(shù)據(jù)庫訪問操作:數(shù)據(jù)庫訪問操作中的連接、查詢和關(guān)閉等操作可以使用模板模式,將通用的操作提取到父類中,而具體的查詢可以由子類來實現(xiàn)。
  2. 游戲開發(fā)中的關(guān)卡設(shè)計:在游戲開發(fā)中,不同的關(guān)卡可能有相同的初始化、更新和結(jié)束等步驟,可以使用模板模式來實現(xiàn)這些關(guān)卡。

更多消息資訊,請訪問昂焱數(shù)據(jù)(https://www.ayshuju.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-635818.html

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

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

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

相關(guān)文章

  • 【設(shè)計模式與范式:行為型】58 | 模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的應(yīng)用

    上兩節(jié)課我們學(xué)習(xí)了第一個行為型設(shè)計模式,觀察者模式。針對不同的應(yīng)用場景,我們講解了不同的實現(xiàn)方式,有同步阻塞、異步非阻塞的實現(xiàn)方式,也有進(jìn)程內(nèi)、進(jìn)程間的實現(xiàn)方式。除此之外,我還帶你手把手實現(xiàn)了一個簡單的 EventBus 框架。 今天,我們再學(xué)習(xí)另外一種行

    2024年02月09日
    瀏覽(21)
  • 深入理解設(shè)計模式-行為型之模板(和回調(diào)區(qū)別聯(lián)系)

    模板設(shè)計模式(Template Design Pattern)是一種行為型設(shè)計模式,它定義了一個算法的骨架,將算法的一些步驟延遲到子類中實現(xiàn)。模板設(shè)計模式允許 子類在不改變算法結(jié)構(gòu)的情況下重新定義算法的某些步驟。 模板設(shè)計模式的核心思想是:將一個算法的 主要結(jié)構(gòu)定義在一個模板

    2024年02月12日
    瀏覽(26)
  • 設(shè)計模式—模板方法模式

    設(shè)計模式—模板方法模式

    定義一個操作的流程框架,而將流程中一些步驟延遲到子類中實現(xiàn)。使得子類在不改變流程結(jié)構(gòu)的情況下,重新定義流程中的特定步驟。 主要角色: 抽象類: 負(fù)責(zé)給出操作流程的輪廓或框架,由模板方法和若干基本方法組成。 ? 1、抽象方法:由抽象類聲明,在具體子類中實

    2024年02月10日
    瀏覽(16)
  • 設(shè)計模式---模板方法模式

    ? ? ? ? 所謂模板方法模式,就是提供一種方法的模板來實現(xiàn)一種規(guī)范,其他人可以利用這個模板定義自己的邏輯。 ? ? ? ? 在Java編程中的應(yīng)用,主要就是通過接口或者抽象類來實現(xiàn)的,抽象類中可以把邏輯函數(shù)聲明為final類型,表示不能被重寫,即不能改變邏輯。在接口中

    2024年04月24日
    瀏覽(20)
  • 【設(shè)計模式】模板方法模式

    模板方法模式:定義一個操作中的算法骨架(父類),而將一些步驟延遲到子類中。 模板方法使得子類可以不改變一個算法的結(jié)構(gòu)來重定義該算法的 實現(xiàn)一些操作時,整體步驟很固定,但是呢。就是其中一小部分需要改變,這時候可以使用模板方法模式,將容易變的部分抽

    2024年02月08日
    瀏覽(22)
  • 設(shè)計模式——模板方法模式

    模板方法模式(Template Method Pattern)是一種行為型設(shè)計模式,它在抽象類中定義了一個算法的框架,并將一些步驟延遲到子類中實現(xiàn)。這種模式使得子類可以在不改變算法結(jié)構(gòu)的情況下重寫算法中的某些特定步驟。 抽象模板類(Abstract Template Class): 定義一個操作中的算法骨架

    2024年01月17日
    瀏覽(32)
  • 設(shè)計模式(13):模板方法模式

    實現(xiàn)一個功能時,整體步驟很固定,但是,某些部分易變。易變部分可以抽象出來,供子類實現(xiàn)。 非常繁瑣,各個框架,類庫中都有它的影子,比如常見的有: 數(shù)據(jù)庫訪問的封裝 Junit單元測試 servlet中關(guān)于doGet/doPost方法調(diào)用 spring框架中各種Template shire中權(quán)限認(rèn)證和授權(quán)都用到

    2024年04月16日
    瀏覽(22)
  • 設(shè)計模式(7)模板方法模式

    一、定義: 定義一個操作中的算法骨架,而將算法的一些步驟延遲到子類中,使得子類可以不改變該算法結(jié)構(gòu)的情況下重定義該算法的某些特定步驟。它是一種類行為型模式。

    2024年02月12日
    瀏覽(21)
  • Java設(shè)計模式 (一) 模板方法設(shè)計模式

    什么是模板方法設(shè)計模式? 模板方法設(shè)計模式是一種行為型設(shè)計模式,它定義了一個算法的骨架,并將一些步驟的具體實現(xiàn)延遲到子類中。模板方法模式可以幫助確保在算法的不同部分中保持一致性,同時也允許子類根據(jù)需要進(jìn)行具體實現(xiàn)。 模板方法模式的關(guān)鍵特點(diǎn)包括:

    2024年02月12日
    瀏覽(21)
  • js設(shè)計模式:模板方法模式

    js設(shè)計模式:模板方法模式

    父類定義一個整體的模板框架,將具體的方法行為定義到子類中。 模板方法主要是封裝行為中的固定部分,同時允許子類對方法進(jìn)行擴(kuò)展

    2024年02月22日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包