HeadFirst 設計模式 8模板方法模式

2021-07-04 15:38:16 字數 1228 閱讀 3518

模板方法模式:

在乙個方法中定義乙個演算法的骨架,並將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。

增加乙個hook()方法後

注意:

此處的hook()(

鉤子)是一種被宣告在抽象類中的方法,但是只有空的或缺省的實現。hook()的存在可以讓子類能夠對演算法的不同點進行掛鉤。而要不要掛鉤,由子類自己決定。例:

通過在子類中覆蓋鉤子,來使用它。此處鉤子的作用是判斷飲料中是否要加入調料。

設計原則:

好萊塢原則:別呼叫(打**給)我們,我們會呼叫(打**給)你

即:允許底層元件將自己掛鉤到系統上,但是高層元件會覺得什麼時候怎麼樣使用這些底層元件。

區別各個模式:

模板方法模式:子類決定如何實現演算法中的某些步驟

策略模式:封裝可互換的行為,然後使用委託來決定要採用哪乙個行為

工廠方法模式:由子類覺得例項化哪個具體類

要點:(1)「模板方法」定義了演算法的步驟,並把這些步驟的實現延遲到子類。

(2)模板方法的抽象類可以定義具體方法、抽象方法和鉤子。

(3)抽象方法由子類實現。

(4)鉤子是一種方法,他在抽象類中不做任何事,或只做預設的事情,子類可以選擇要不要覆蓋它。

(5)為了防止子類改變模板方法中的演算法,可以將模板方法宣告為final。

(6)好萊塢原則:將決策權放在高層模組中,以便決定何時、如何呼叫底層模組。

(7)策略模式和模板方法都封裝演算法,但是前者用組合,後者用繼承。

(8)工廠方法是模板方法的一種特殊版本。

《Head First 設計模式》筆記8

在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類。模版方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。好萊塢原則 別呼叫 打 給 我們,我們會呼叫 打 給 你。由高層元件決定低層元件的行為,而不是反過來 現在你有兩種沖泡飲料,分別是咖啡和茶。咖啡的沖泡過程 1.把水煮...

headfirst設計模式

花了一周多一點的時間看完了headfirst的設計模式。看完之後有一種恍然大悟的感覺,仔細想想有覺得自己好像什麼也看懂。簡單說下對這本書的一點感悟吧,headfirst的書比較通俗易懂,之前看了四人幫的設計模式,看一半就有一種痛不欲生的感覺,自己水平有限,看不懂,也就沒在勉強自己了。對於模式其實簡單...

HeadFirst 設計模式 工廠模式

定義乙個建立物件的介面,由子類決定要例項化的類。工廠方法將類例項推遲到子類。依賴倒置。第一種方式是 class pizzastore public pizza orderpizza string type class pizzafactory pizza pizza null 將pizza這個例項提...