Java描述設計模式(19):模板方法模式
本文原始碼:GitHub·點這裡 || GitEE·點這裡
一、生活場景
通常一款網際網路應用的開發流程如下:業務需求,規劃產品,程式開發,測試交付。現在基於模板方法模式進行該過程描述。
public class C01_InScene { public static void main(String[] args) { DevelopApp developApp = new DevelopApp() ; developApp.templateMethod() ; } } /** * 軟體開發抽象類 */ abstract class SoftDevelop { public void templateMethod(){ //呼叫基本方法 doBiz (); doProduct(); doDevelop(); doTest(); } public abstract void doBiz () ; public abstract void doProduct () ; public abstract void doDevelop () ; public abstract void doTest () ; } /** * APP開發具體類 */ class DevelopApp extends SoftDevelop { @Override public void doBiz() { System.out.println("整理App業務"); } @Override public void doProduct() { System.out.println("輸出App產品"); } @Override public void doDevelop() { System.out.println("進行App開發"); } @Override public void doTest() { System.out.println("進行App測試"); } }
二、模板方法模式
1、基礎概念
模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以用不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。簡單說,模板方法模式定義流程中的核心的框架,而將實際的業務操作延遲到子類中,使得子類可以不改變流程的結構,但可以重定義業務程式。
2、模式圖解
3、核心角色
- 抽象模板角色
類中實現了模板方法(template),定義流程結構,具體業務需求子類需要去實現。
- 具體模板角色
實現父類所定義的一個或多個抽象方法,是整個流程的組成方法。抽象模板角色都可以有任意多個具體模板角色與之對應,具體模板角色都可以給出這些抽象方法的不同實現。
4、原始碼實現
/** * 抽象模板角色 */ abstract class AbstractTemplate { /** * 模板方法 */ public void templateMethod(){ //呼叫基本方法 abstractMethod(); hookMethod(); concreteMethod(); } /** * 相關基本方法 */ protected abstract void abstractMethod(); protected void hookMethod(){} private final void concreteMethod(){} } /** * 具體模板角色 */ class ConcreteTemplate extends AbstractTemplate{ /** * 基本方法的實現 */ @Override public void abstractMethod() { } /** * 重寫父類的方法 */ @Override public void hookMethod(){ } }
5、不同方法描述
- 模板方法
定義在抽象類中的,把基本操作方法組合在一起形成一個總流程的方法,可以有任意多個模板方法。
- 基本方法
- 抽象方法:抽象方法由抽象類宣告,由具體子類實現。
- 具體方法:具體方法由抽象類宣告並實現,而子類並不實現。
- 鉤子方法:鉤子方法由抽象類宣告並實現,而子類可以加以擴充套件。
三、JavaEE應用
HttpServlet擔任抽象模板角色,模板方法:由service()方法擔任。基本方法:由doPost()、doGet()等方法擔任。service()方法流程,省略了部分判斷邏輯。該方法呼叫七個do方法中的一個或幾個,完成對客戶端請求的響應。這些do方法需要由HttpServlet的具體子類提供,在JavaEE中使用時,通常會自己實現相關方法。在API的封裝是典型的模板方法模式。
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if (method.equals("GET")) {
this.doGet(req, resp);
} else if (method.equals("HEAD")) {
this.doHead(req, resp);
} else if (method.equals("POST")) {
this.doPost(req, resp);
} else if (method.equals("PUT")) {
this.doPut(req, resp);
} else if (method.equals("DELETE")) {
this.doDelete(req, resp);
} else if (method.equals("OPTIONS")) {
this.doOptions(req, resp);
} else if (method.equals("TRACE")) {
this.doTrace(req, resp);
} else {
String errMsg = lStrings.getString("http.method_not_implemented");
Object[] errArgs = new Object[]{method};
errMsg = MessageFormat.format(errMsg, errArgs);
resp.sendError(501, errMsg);
}
}
四、原始碼地址
GitHub·地址
https://github.com/cicadasmile/model-arithmetic-parent
GitEE·地址
https://gitee.com/cicadasmile/model-arithmetic-parent
相關推薦
Java描述設計模式(19):模板方法模式
本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、生活場景 通常一款網際網路應用的開發流程如下:業務需求,規劃產品,程式開發,測試交付。現在基於模板方法模式進行該過程描述。 public class C01_InScene { public static void main(String
c#設計模式系列:模板方法模式(Template Method Pattern)
出了 strong view crete question ron 屬於 png 過多 引言 提到模板,大家肯定不免想到生活中的“簡歷模板”、“論文模板”、“Word中模版文件”等,在現實生活中,模板的概念就是——有一個規定的格式,然後每個人都可以根據自己的需求或情況去更
設計模式13:模板方法模式
模板方法 概念:定義一個操作中演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重定義該演算法的某些特定步驟 本質:分離演算法,選擇實現。即處理步驟父類中定義好,具體實現延遲到子類中定義 其實這個蠻好懂啦,設想一下,當你和某個老哥一起去銀行辦理業務,你辦理
23種設計模式之:模板方法模式
一、定義、型別及類圖 定義:定義一個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟。 型別:行為類模式 類圖:第二圖出自——《大話設計模式》 二、示例 事實上,模版方法是程式設計中
Java設計模式(九):模板方法設計模式
1. 應用場景 模板模式就是通過抽象類來定義一個邏輯模板,邏輯框架、邏輯原型,然後將無法決定的部分抽象成抽象類交由子類來實現,一般這些抽象類的呼叫邏輯還是在抽象類中完成的。這麼看來,模板就是定義一個框架,比如蓋房子,我們定義一個模板:房子要封閉,有門,有窗等等,但是要什麼樣的門,什麼樣的
Java學習筆記——設計模式之七.模板方法模式
tro mage emp java學習 java學習筆記 trac 子類 技術 primitive 模板方法模式(TemplateMethod),定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
C#設計模式之行為類模式:模板方法模式
frame 應該 ocp 方式 src 代碼復用 操作 優缺點 sse 定義(Template Method) 定義一個操作中算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 啟示 組裝電腦一般包含三個部分,主機、顯示
“Head First 設計模式“ :模板方法模式
設計模式 模板方法模式 模板方法 模板方法模式 定義:模板方法模式在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。模板方法就是一個固定步驟的“算法”骨架方法。這個算法的可變部分通過繼承,在子類中重載實現。這樣就可以
Java設計模式學習記錄-模板方法模式
前言 模板方法模式,定義一個操作中演算法的骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構即可重新定義該演算法的某些特定步驟。 模板方法模式 概念介紹 模板方法模式,其實是很好理解的,具體理解為,定義一個操作中演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演
設計模式:模板方法模式-template method
定義一個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重新定義該演算法的某些特定步驟 在抽象父類中,可以定義多種不同型別的方法,如下: 呼叫基本
設計模式第12篇:模板方法模式
一.模板方法模式介紹 模板方法模式中規定了完成一個任務的各個工序的執行順序,同時對某些通用的基礎工序提供了預設的實現。比如給定一個造房子的任務,完成這個任務的工序可以分解為打地基buildFoundation(),建柱子buildPillars(),建牆buildWalls(),裝窗戶buildWind
設計模式:模板方法模式(Template Method Pattern)
/** * 模板方法模式。 * 模板方法模式在一個方法中定義演算法的骨架,而將一些步驟延遲到子類中。 * 模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。 * @author Bright Lee */ public class TemplateMeth
一天一個設計模式:模板方法模式
概念: 模板方法模式是類的行為模式,準備一個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法模式的意思。 結構: 模板方法模式中,抽象類負責定義整個的邏輯框架,
設計模式(三):模板方法模式
date 類定義 dimen 子類重寫 ole end recipe 增加 指導 一、星巴克服務員 1.初級服務員 假如你是一位剛入職的星巴克服務員,負責為客人泡制咖啡和茶。公司規定茶和咖啡的泡制要遵循下面的步驟: 於是你按照步驟單上的要求設計了咖啡(Coffee
設計模式學習總結:模板方法模式(Template Method)
1.場景分析 茶和咖啡是兩種飲料,但是它們的沖泡方法十分相似,沖泡方法如下。 茶:把水煮沸->沸水浸泡茶葉->把茶倒進杯子->加檸檬 咖啡:把水煮沸->用沸水沖泡咖啡->把咖啡裝進杯子->加糖和牛奶 用程式碼來實現咖啡
《JAVA與模式》之模板方法模式
cal php pri jsm vsm uft tmp throw tox 模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體構造函數的形式實現,然後聲明一些抽象方法來迫使子類實現剩余的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩余的邏輯
C#設計模式之十三模板方法模式(Template Method Pattern)【行為型】
並集 client 變化 args 集中 pac 爸爸 rim 自己 原文:C#設計模式之十三模板方法模式(Template Method Pattern)【行為型】一、引言 “結構型”的設計模式已經寫完了,從今天我們開始講“行為型”設計模式。現在我們開始講【行為型】設
設計模式 十九 模板方法模式Template method(類行為型)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【設計模式-5】模板方法模式
模板方法模式 優點: 提高程式碼複用性 將相同部分的程式碼放在抽象的父類中 提高了拓展性 將不同的程式碼放入不同的子類中,通過對子類的擴充套件增加新的行為 實現了反向控制 通過一個父
設計模式學習(八) 模板方法模式
引入 定義:在一個方法中定義了一個演算法的骨架,而將一些一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法介面的情況下,重新定義演算法中的某些步驟。 uml類圖 這個模式是用來建立一個演算法的模板,什麼是模板?如你所見的,模板就是一個方法。更具體地說,這個方法