設計模式系列(圖文解析,附帶原始碼) - 模板方法
模板方法(Template Method)
Intent
定義演算法框架,並將一些步驟的實現延遲到子類。
通過模板方法,子類可以重新定義演算法的某些步驟,而不用改變演算法的結構。
Class Diagram
Implementation
衝咖啡和沖茶都有類似的流程,但是某些步驟會有點不一樣,要求複用那些相同步驟的程式碼。
public abstract class CaffeineBeverage {
final void prepareRecipe() {
boilWater();
brew();
pourInCup();
addCondiments();
}
abstract void brew();
abstract void addCondiments();
void boilWater() {
System.out.println("boilWater");
}
void pourInCup() {
System.out.println("pourInCup");
}
}
public class Coffee extends CaffeineBeverage {
@Override
void brew() {
System.out.println("Coffee.brew");
}
@Override
void addCondiments() {
System.out.println("Coffee.addCondiments");
}
}
public class Tea extends CaffeineBeverage {
@Override
void brew() {
System.out.println("Tea.brew");
}
@Override
void addCondiments() {
System.out.println("Tea.addCondiments");
}
}
public class Client {
public static void main(String[] args) {
CaffeineBeverage caffeineBeverage = new Coffee();
caffeineBeverage.prepareRecipe();
System.out.println("-----------");
caffeineBeverage = new Tea();
caffeineBeverage.prepareRecipe();
}
}
boilWater
Coffee.brew
pourInCup
Coffee.addCondiments
-----------
boilWater
Tea.brew
pourInCup
Tea.addCondiments
JDK
- java.util.Collections#sort()
- java.io.InputStream#skip()
- java.io.InputStream#read()
- java.util.AbstractList#indexOf()
相關文章
- 設計模式系列(圖文解析,附帶原始碼) - 命令設計模式原始碼
- 設計模式系列(圖文解析,附帶原始碼)- 空物件設計模式原始碼物件
- 設計模式系列(圖文解析,附帶原始碼) - 生成器設計模式原始碼
- 設計模式系列(圖文解析,附帶原始碼) - 介面卡設計模式原始碼
- 原始碼中的設計模式--模板方法模式原始碼設計模式
- 原始碼中的設計模式--模板方法模式(鉤子方法)原始碼設計模式
- Android原始碼設計模式-模板模式Android原始碼設計模式
- 從原始碼學習設計模式之模板方法原始碼設計模式
- 設計模式(十四)——模板模式(SpringIOC原始碼分析)設計模式Spring原始碼
- 結合案例深入解析模板方法設計模式設計模式
- 設計模式-模板方法模式設計模式
- 模板方法設計模式設計模式
- 軟體設計模式系列之二十四——模板方法模式設計模式
- 設計模式之【模板方法模式】設計模式
- 設計模式之模板方法模式設計模式
- Java設計模式-模板方法模式Java設計模式
- python設計模式-模板方法模式Python設計模式
- js設計模式--模板方法模式JS設計模式
- 設計模式之模板方法設計模式
- 【趣味設計模式系列】之【代理模式3--Cglib動態代理原始碼解析】設計模式CGLib原始碼
- 【趣味設計模式系列】之【代理模式2--JDK動態代理原始碼解析】設計模式JDK原始碼
- Gson原始碼解析和它的設計模式原始碼設計模式
- 設計模式(十)——組合模式(HashMap原始碼解析)設計模式HashMap原始碼
- 《Head First 設計模式》:模板方法模式設計模式
- PHP設計模式之模板方法模式PHP設計模式
- 極簡設計模式-模板方法模式設計模式
- 簡說設計模式——模板方法模式設計模式
- 設計模式實戰-模板方法模式設計模式
- 23種設計模式(四)- 模板方法設計模式設計模式
- JAVA設計模式之模板方法Java設計模式
- 詳解模板方法設計模式設計模式
- Java描述設計模式(19):模板方法模式Java設計模式
- Java設計模式之(十三)——模板方法模式Java設計模式
- C#設計模式(14)——模板方法模式C#設計模式
- javascript設計模式 之 8 模板方法模式JavaScript設計模式
- 23種設計模式之模板方法設計模式
- 設計模式漫談之模板方法設計模式
- Rust語言之GoF設計模式: 模板方法模式RustGo設計模式