設計模式系列教程(08) 模板方法

2021-09-29 03:19:20 字數 1503 閱讀 5274

模板方法模式:定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的。 重複**全部在父類裡面,不同業務的,抽取給子類進行實現。抽取過程—抽象方法。某些特定步驟。

核心:處理某個流程的**已經都具備,但是其中某個節點的**暫時不能確定。因此,我們採用工廠方法模式,將這個節點的**實現轉移給子類完成。即:處理步驟在父類中定義好,具體的實現延遲到子類中定義。說白了,就是將一些相同操作的**,封裝成乙個演算法的骨架。核心的部分留在子類中操作,在父類中只把那些骨架做好。

例如:

去銀行辦業務,銀行給我們提供了乙個模板就是:先取號,排對,辦理業務(核心部分我們子類完成),給客服人員評分,完畢。這裡辦理業務是屬於子類來完成的,其他的取號,排隊,評分則是乙個模板。

去餐廳吃飯,餐廳給提供的一套模板就是:先點餐,等待,吃飯(核心部分我們子類完成),買單。這裡吃飯是屬於子類來完成的,其他的點餐,買單則是餐廳提供給我們客戶的乙個模板。

這裡使用銀行辦理業務為例。

1.模板定義,模板中把辦理業務用作核心部分,讓子類來實現。

public

abstract

class

banktemplatemethod

// 2.每個子類不同的業務實現,由各自子類實現.

abstract

void

transact()

;// 3.評價

public

void

evaluate()

public

void

process()

}

2.具體的模板方法的子類:

public

class

drawmoney

extends

banktemplatemethod

}

3.客戶端測試類:

public

class

client

...");

}}; banktemplatemethod.

process();}}

執行結果:

實現一些操作時,整體步驟很固定,但是呢。就是其中一小部分容易變,這時候可以使用模板方法模式,將容易變的部分抽象出來,供子類實現。

其實,各個框架中,都有模板方法模式的影子,例如:

模板方法模式 設計模式系列

模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定的步驟。定義有些呆板,說說我的理解吧。父類定義實施的步驟,子類中實現具體的演算法。當我們要完成在某一細節層次一直得乙個過程或一系列步驟,但其個別步驟在更詳細的層...

Android設計模式系列 模板方法模式

2013 11 26 17 15 佚名 字型大小 t t 我個人對模板方法的經典思想特別推崇,雖然模板方法在大對數情況下並不被推薦使用,但是這種通過父類呼叫子類的方法,使用繼承來改變演算法的一部分,是物件導向的一種基本認識。模板方法,和單例模式是我認為gof的23中最簡單的兩種模式。但是我個人對模板...

設計模式系列之模板方法模式

在物件導向開發過程中,通常會遇到這樣乙個問題,我們知道乙個演算法所需的關鍵步驟,並確定了這些步驟的執行順序,但是,某些步驟的具體實現是未知的,或者說某些步驟的實現是會隨著環境的變化而改變,例如,執行程式的流程大致如下 1 檢查 的正確性 2 鏈結相關的類庫 3 編譯相關的 4 執行程式 對於不同的程...