設計模式之模板方法模式 慕課網筆記

2021-08-06 02:08:31 字數 3767 閱讀 7814

第1章 模板方法模式初探

1-1 什麼是模板方法模式

模板方法模式template method

1. 什麼是模板方法模式

2. 如何實現模板方法模式

3. 模板方法模式的特點

4. 模板方法模式在專案中的應用

生活中的模板

1. 進門取號

2. 填寫單據

3. 等待叫號

4. 視窗辦理

奧運會開幕式

1. 公升國旗奏國歌

2. 致辭講話

3. 文藝匯演

4. 入場儀式

5. 點燃奧運聖火

演算法執行的統一框架

- step 1

- step 2

- …

- step n

飲料的調製方法

- 咖啡的泡法

1. 把水煮沸

2. 用沸水沖泡咖啡

3. 把咖啡倒進杯子

4. 加糖和牛奶

- 茶的泡法

1. 把水煮沸

2. 用沸水浸泡茶葉

3. 把茶倒進杯子

4. 加檸檬

提神飲料泡法

1. 把水煮沸(boilwater)

2. 泡飲料(brew)

3. 把飲料倒進杯子(pourincup)

4. 加調味料(addcondiments)

第2章 模板方法模式的**實現

2-1 用抽象基類定義框架

/*

* 抽象基類,為所有子類提供乙個演算法框架

* * 提神飲料

*/public

abstract

class

refreshbeverage

/** 基本方法,將水煮沸

*/private

void

boilwater()

/** 基本方法,將飲料倒入杯中

*/private

void

pourincup()

/** 抽象的基本方法,泡製飲料

*/protected

abstract

void

brew();

/** 抽象的基本方法, 加入調味料

*/protected

abstract

void

addcondiments();

}

2-2 具體子類實現延遲步驟
/*

* 具體子類,提供了咖啡製備的具體實現

*/public

class

coffee

extends

refreshbeverage

@override

protected

void

addcondiments()

}

/*

* 具體子類,提供了製備茶的具體實現

*/public

class

teaextends

refreshbeverage

@override

protected

void

addcondiments()

}

public

class

refreshbeveragetest

}

2-3 鉤子使子類更靈活
/*

* 抽象基類,為所有子類提供乙個演算法框架

* * 提神飲料

*/public

abstract

class

refreshbeverage }/*

* hook, 鉤子函式,提供乙個預設或空的實現

* 具體的子類可以自行決定是否掛鉤以及如何掛鉤

* 詢問使用者是否加入調料

*/protected

boolean

iscustomerwantscondiments()

/** 基本方法,將水煮沸

*/private

void

boilwater()

/** 基本方法,將飲料倒入杯中

*/private

void

pourincup()

/** 抽象的基本方法,泡製飲料

*/protected

abstract

void

brew();

/** 抽象的基本方法, 加入調味料

*/protected

abstract

void

addcondiments();

}

/*

* 具體子類,提供了咖啡製備的具體實現

*/public

class

coffee

extends

refreshbeverage

@override

protected

void

addcondiments()

}

/*

* 具體子類,提供了製備茶的具體實現

*/public

class

teaextends

refreshbeverage

@override

protected

void

addcondiments()

@override

/* * 子類通過覆蓋的形式選擇掛載鉤子函式

* @see com.imooc.pattern.template.refreshbeverage#iscustomerwantscondiments()

*/protected

boolean

iscustomerwantscondiments()

}

public

class

refreshbeveragetest

}

第3章 模板方法模式總結

3-1 模板方法模式總結

抽象基類

1. 基本方法

2. 抽象方法

3. 可選鉤子

4. template方法(final)

好萊塢原則

don』t call us!we will call you.

具體子類

1. 實現基類中的抽象方法

2. 覆蓋鉤子方法

模板方法模式的實現要素

準備乙個抽象類,將部分邏輯以具體方法的形式實現,然後

宣告一些抽象方法交由子類實現剩餘邏輯,用鉤子方法給予

子類更大的靈活性。最後將方法彙總構成乙個不可改變的

模板方法。

模板方法模式的適用場景

1. 演算法或操作遵循相似的邏輯

2. 重構時(把相同的方法抽取到父類中)

3. 重要、複雜的演算法,核心演算法設計為模板演算法

模板方法模式的優點

1. 封裝性好

2. 復用性好

3. 遮蔽細節

4. 便於維護

模板方法模式的缺點

繼承3-2 行業案例分享

運營商日誌

擴充套件點

- beforeprocessonefile()

- afterprocessonefile()

模板設計模式 PHP設計模式之模板方法模式

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...

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

父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...

設計模式之模板方法模式

定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟 型別 行為類模式 事實上,模板方法是程式設計中乙個經常用到的模式。比如,給定乙個整數陣列,把陣列中的數由大到小順序,然後把排序之後的結果列印出來。這個需求大體可以分為兩部分,...