行為型設(shè)計(jì)模式.模板模式

一、概念

將算法通用部分抽象出來(lái),延遲到子類(lèi)實(shí)現(xiàn)

1.1、定義

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


Template.png
  • Template,模板抽象類(lèi):定義算法執(zhí)行順序,和算法通用部分

  • ConcreteTemplete ,具體算法類(lèi):實(shí)現(xiàn)算法異動(dòng)部分

  • 模板模式實(shí)現(xiàn)關(guān)鍵:在于如何抽象出通用部分,按照設(shè)定好步驟的執(zhí)行順序。

1.2、解決的問(wèn)題
  • 問(wèn)題分析:實(shí)際開(kāi)發(fā)中存在這樣一種情況,執(zhí)行過(guò)程都是劃分幾個(gè)固定步驟,然后依序執(zhí)行;但是,實(shí)際執(zhí)行人不同,導(dǎo)致的結(jié)果也不同。例如蓋房子、裝修房子等等,都是按照特定工序一步步往下依序執(zhí)行。

  • 模式的解決思路:將算法執(zhí)行過(guò)程,抽象剝離為幾個(gè)步驟,然后按照一定順序執(zhí)行。即一個(gè)抽象類(lèi)公開(kāi)定義了執(zhí)行它的方法的方式/模板,具體的執(zhí)行延遲到模板子類(lèi)完成。

二、模式的應(yīng)用和優(yōu)缺點(diǎn)

2.1、應(yīng)用場(chǎng)景
  • 實(shí)例:
    1、spring 中對(duì) Hibernate 的支持,將一些已經(jīng)定好的方法封裝起來(lái),比如開(kāi)啟事務(wù)、獲取 Session、關(guān)閉 Session 等,程序員不重復(fù)寫(xiě)那些已經(jīng)規(guī)范好的代碼,直接丟一個(gè)實(shí)體就可以保存。
    2、軟件開(kāi)發(fā)的項(xiàng)目管理過(guò)程:需求評(píng)審/分析/設(shè)計(jì) - 開(kāi)發(fā)-測(cè)試-發(fā)布等等。
2.2、優(yōu)缺點(diǎn)
  • 優(yōu)點(diǎn):
    1、提取公共代碼,提高代碼復(fù)用率
    2、具體細(xì)節(jié)步驟實(shí)現(xiàn)定義在子類(lèi)中,子類(lèi)定義詳細(xì)處理算法是不會(huì)改變算法整體結(jié)構(gòu)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 場(chǎng)景問(wèn)題# 1.1 登錄控制## 幾乎所有的應(yīng)用系統(tǒng),都需要系統(tǒng)登錄控制的功能,有些系統(tǒng)甚至有多個(gè)登錄控制的功...
    七寸知架構(gòu)閱讀 2,047評(píng)論 3 53
  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,081評(píng)論 1 15
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,940評(píng)論 25 709
  • 設(shè)計(jì)模式基本原則 開(kāi)放-封閉原則(OCP),是說(shuō)軟件實(shí)體(類(lèi)、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開(kāi)-閉原...
    西山薄涼閱讀 4,080評(píng)論 3 14
  • 江畔何人初見(jiàn)月,江月何年初照人。 轉(zhuǎn)載散文: 天上月圓,人間月半。今夜無(wú)眠。 融融的月光透過(guò)窗臺(tái),癡癡...
    招財(cái)貓Peggy閱讀 820評(píng)論 0 0

友情鏈接更多精彩內(nèi)容