JAVA設計模式之 模板方法模式【Template Method Pattern】
一、概述
定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。它是一種類行為型模式。
二、適用場景
適用於對一些複雜的操作/演算法進行步驟分割、抽取公共部分由抽象父類實現、將不同部分在父類别範本方法中定義抽象實現、而將具體的實現過程由子類完成。
三、UML類圖
四、參與者
1>、AbstractClass(抽象類):提供模板方法、並且定義演算法框架。
2>、ConcreteClass(具體子類):它是抽象類的子類,用於實現在父類中宣告的抽象基本操作以完成子類特定演算法的步驟,也可以覆蓋在父類中已經實現的具體基本操作。
五、用例學習
1、抽象父類:AbstractClass.java
/**
* JAVA設計模式之 模板方法模式
* 抽象類:提供模板方法
* @author lvzb.software@qq.com
*
*/
public abstract class AbstractClass {
/**
* 模板方法<br/>
* 定義/封裝複雜流程/操作的實現步驟和執行次序
*/
public void TemplateMethod(){
Operation1();
Operation2();
Operation3();
}
/**
* 演算法/操作一<br/>
* 公用的實現邏輯
*/
protected void Operation1() {
// 完成操作一的具體演算法/邏輯實現
}
/**
* 演算法/操作二<br/>
* 提供抽象方法,具體的演算法/邏輯實現由子類去完成
*/
protected abstract void Operation2();
/**
* 演算法/操作三<br/>
* 提供抽象方法,具體的演算法/邏輯實現由子類去完成
*/
protected abstract void Operation3();
}
2、具體子類:ConcreteClass.java
/**
* 具體子類<br/>
* 實現抽象類的抽象方法,完成具體的演算法/邏輯
* @author lvzb.software@qq.com
*
*/
public class ConcreteClass extends AbstractClass {
@Override
protected void Operation2() {
// 實現父類中模板方法中的步驟二的具體演算法/邏輯
}
@Override
protected void Operation3() {
// 實現父類中模板方法中的步驟三的具體演算法/邏輯
}
}
六、其他
模板方法模式是結構最簡單的行為型設計模式,在其結構中只存在父類與子類之間的繼承關係。通過使用模板方法模式,可以將一些複雜流程的實現步驟封裝在一系列基本方法中,在抽象父類中提供一個稱之為模板方法的方法來定義這些基本方法的執行次序,而通過其子類來覆蓋某些步驟,從而使得相同的演算法框架可以有不同的執行結果。模板方法模式提供了一個模板方法來定義演算法框架,而某些具體步驟的實現可以在其子類中完成。
相關文章
- C#設計模式-模板方法模式(Template Method)C#設計模式
- 使用C# (.NET Core) 實現模板方法模式 (Template Method Pattern)C#模式
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- Head First 設計模式 —— 09. 模版方法 (Template Method) 模式設計模式
- 人人都會設計模式—模版方法模式–Template-Method設計模式
- Java設計模式之(十三)——模板方法模式Java設計模式
- JAVA設計模式之模板方法Java設計模式
- 折騰Java設計模式之模板方法模式Java設計模式
- Java設計模式-模板方法模式Java設計模式
- Java設計模式之模板方法模式和建造者模式Java設計模式
- 模板方法模式(Template)模式
- 設計模式之【模板方法模式】設計模式
- 設計模式之模板方法模式設計模式
- 設計模式之----Java模板模式設計模式Java
- PHP設計模式之模板方法模式PHP設計模式
- 設計模式之模板方法設計模式
- Java描述設計模式(19):模板方法模式Java設計模式
- javascript設計模式 之 8 模板方法模式JavaScript設計模式
- 13.java設計模式之模板模式Java設計模式
- 設計模式之代理模式(proxy pattern)設計模式
- 設計模式之策略模式和狀態模式(strategy pattern & state pattern)設計模式
- 設計模式-模板方法模式設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- 4/24 設計模式之命令設計模式 Command Pattern設計模式
- 1/24 設計模式之策略設計模式 Strategy Pattern設計模式
- python設計模式-模板方法模式Python設計模式
- js設計模式--模板方法模式JS設計模式
- 談一談我對‘模板方法’設計模式的理解(Template)設計模式
- 23種設計模式之模板方法設計模式
- 設計模式漫談之模板方法設計模式
- 設計模式之介面卡模式(adapter pattern)設計模式APT
- 設計模式之裝飾器模式(decorator pattern)設計模式
- 設計模式之觀察者模式(Observer Pattern)設計模式Server
- 模板方法設計模式設計模式
- java模板設計模式Java設計模式
- Java設計模式之工廠方法模式Java設計模式
- 《Head First 設計模式》:模板方法模式設計模式
- 極簡設計模式-模板方法模式設計模式