設計模式 模板方法模式

2021-09-26 00:13:48 字數 1404 閱讀 7003

定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟。

型別:行為類模式

類圖:

事實上,模版方法是程式設計中乙個經常用到的模式。先來看乙個例子,某日,程式設計師a拿到乙個任務:給定乙個整數陣列,把陣列中的數由小到大排序,然後把排序之後的結果列印出來。經過分析之後,這個任務大體上可分為兩部分,排序和列印,列印功能好實現,排序就有點麻煩了。但是a有辦法,先把列印功能完成,排序功能另找人做。

abstract

class

abstractsort

}}

寫完後,a找到剛畢業入職不久的同事b說:有個任務,主要邏輯我已經寫好了,你把剩下的邏輯實現一下吧。於是把abstractsort類給b,讓b寫實現。b拿過來一看,太簡單了,10分鐘搞定,**如下:

class

concretesort

extends

abstractsort

}private

void

selectsort

(int

array,

int index)

} temp = array[index]

;// 交換兩數值

array[index]

= array[indexmin]

; array[indexmin]

= temp;

}}

寫好後交給a,a拿來一執行:

public

class

client

;// 預設資料陣列

public

static

void

main

(string[

] args)

}

這就是模版方法模式。大部分剛步入職場的畢業生應該都有類似b的經歷。乙個複雜的任務,由公司中的牛人們將主要的邏輯寫好,然後把那些看上去比較簡單的方法寫成抽象的,交給其他的同事去開發。這種分工方式在程式設計人員水平層次比較明顯的公司中經常用到。比如乙個專案組,有架構師,高階工程師,初級工程師,則一般由架構師使用大量的介面、抽象類將整個系統的邏輯串起來,實現的編碼則根據難度的不同分別交給高階工程師和初級工程師來完成。

模版方法模式由乙個抽象類和乙個(或一組)實現類通過繼承結構組成,抽象類中的方法分為三種:

實現類用來實現細節。抽象類中的模版方法正是通過實現類擴充套件的方法來完成業務邏輯。只要實現類中的擴充套件方法通過了單元測試,在模版方法正確的前提下,整體功能一般不會出現大的錯誤。

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

設計模式 模板方法設計模式

物件導向,萬物皆物件,用乙個雷來反應現實生活中的東西。比如銀行系統,業務公升級 活期 定期,差別很小,就加判斷 違背單一職責 差別比較多,尤其是模擬較複雜,型別拆分下。拆分之後,自然就有父類,重用。利率 每個客戶端都有利率,但是各不一樣 抽象方法。show 不分客戶端是一樣的,個別客戶端是不一樣的 ...

設計模式 模板方法模式

模板方法模式 類庫中大量使用,例如idbconnection介面 dbconnection抽象類 派生的sqlconnection和派生的oledbconnection就是使用了這種方法 1。介面,到能做的定義進來。一種規範 2.把共同的部分進去分離出來,放到乙個抽象的父類去實現.3.子類中實現 不...