1. 程式人生 > >JAVA設計模式之 模板方法模式【Template Method Pattern】

JAVA設計模式之 模板方法模式【Template Method Pattern】

一、概述

    定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。它是一種類行為型模式。

二、適用場景

    適用於對一些複雜的操作/演算法進行步驟分割、抽取公共部分由抽象父類實現、將不同部分在父類模板方法中定義抽象實現、而將具體的實現過程由子類完成。

三、UML類圖

    

四、參與者

1>、AbstractClass(抽象類):提供模板方法、並且定義演算法框架。

2>、ConcreteClass(具體子類):它是抽象類的子類,用於實現在父類中宣告的抽象基本操作以完成子類特定演算法的步驟,也可以覆蓋在父類中已經實現的具體基本操作。

五、用例學習

1、抽象父類:AbstractClass.java

/**
 * JAVA設計模式之 模板方法模式
 * 抽象類:提供模板方法
 * @author  [email protected]
 *
 */
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  [email protected]
 *
 */
public class ConcreteClass extends AbstractClass {

	@Override
	protected void Operation2() {
		// 實現父類中模板方法中的步驟二的具體演算法/邏輯
	}

	@Override
	protected void Operation3() {
		// 實現父類中模板方法中的步驟三的具體演算法/邏輯
	}

}

六、其他

    模板方法模式是結構最簡單的行為型設計模式,在其結構中只存在父類與子類之間的繼承關係。通過使用模板方法模式,可以將一些複雜流程的實現步驟封裝在一系列基本方法中,在抽象父類中提供一個稱之為模板方法的方法來定義這些基本方法的執行次序,而通過其子類來覆蓋某些步驟,從而使得相同的演算法框架可以有不同的執行結果。模板方法模式提供了一個模板方法來定義演算法框架,而某些具體步驟的實現可以在其子類中完成。


相關推薦

JAVA設計模式 模板方法模式Template Method Pattern

一、概述     定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。它是一種類行為型模式。 二、適用場景     適用於對一些複雜的操作/演算法進行步驟分割、抽取公共部分由抽象父類實現

java設計模式模板方法模式

java 設計模式宋丹丹姐的一個小品,說把大象放入冰箱分為幾步驟,三步、第一步:把冰箱門打開,第二步:把大象裝進去,第三步:把冰箱門關上。就是這樣的一個小品,可以說是其實簡化的一個模板方法。把雞蛋裝進冰箱分為幾步,同樣也是這個道理。模板方法模式概念:把一些共同的行為抽象出來,作為父類公共使用,一些具體的步驟

JAVA設計模式模板方法模式和建造者模式

一、前期回顧 上一篇《Java 設計模式之工廠方法模式與抽象工廠模式》介紹了三種工廠模式,分別是工廠方法模式,簡單工廠方法模式,抽象工廠模式,文中詳細根據實際場景介紹了三種模式的定義,實踐,最後總結了三種方式的區別,以及各個模式的適用場景。這一篇博文我們來學習下模板方法模式和建造者模式。

Java設計模式模板方法模式Template Method

本文繼續介紹23種設計模式系列之模板方法模式。概述模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法

淺談java 23種設計模式模板方法模式Template

模板方法模式:模板方法模式是類的行為模式的一種,符合開閉原則(對擴充套件開放,對修改關閉)。父類提取子類公共方法,並提供若干抽象方法供子類實現,以減少子類中的重複程式碼,並提高可複用性。示例:1.建立一個父類bird,每天只有吃和睡才能生活,但是必須要先進行吃,然後再進行睡:

Head First設計模式模板方法模式

names 去除 缺點 ide 個數 write ima 父類 public 一、定義 在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變算法結構的情況下,重定義該算法中的某些特定步驟。 比較通俗的說法,子類決定如何實現算法中的某些步驟,比如兩

23種設計模式模板方法模式

技術分享 cnblogs ati strac void package com rim div 模板方法模式(TemplateMethod):定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。

設計模式模板方法模式

nbsp outline 依次 print 繪畫 false 鉤子方法 註意 div (文章的部分內容參考了《設計模式之禪》一書,大家也可以讀讀看,內容寫的非常好) 什麽是模板方法模式 它的定義如下: 定義一個操作中的算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變

GOF23設計模式模板方法模式template method

評分 end 抽象方法 abs 方法調用 轉移 pri spa 應用 一、模板方法模式概述   模板方法模式是編程中經常使用的模式。它定義了一種操作中的算法架構,將某些步驟延遲到子類中實現。這樣,新的子類可以在不改變一個算法結構的前提下重新定義該算法的某些特定步驟。   (

設計模式模板方法模式(TemplateMethod)

pla AR 應用 blog public ood 操作 () eal 模板方法模式使用繼承來實現模式的功能,在基類使用一個方法來定義算法的各個步驟,這些步驟(方法)的具體實現會放到子類中,通過這樣來實現不同算法對象的算法拼合,完成該對象整體算法的實現。 作用 模板方法

設計模式的藝術 行為型模式模板方法模式

前言 生活中有許多事情可以理解成分步驟執行的東西,比如請客吃飯,無論吃什麼,一般都包含著點單,吃東西,買單幾個步驟,不論吃麵還是吃大餐,其他步驟不會變,最多變變點單,在軟體開發中,也會有類似的情況出現,我們可以有個點單的基類,然後子類裡面具體實現是吃麵還是點大餐,這就是模板方法模式,這種模式利用

每天學點設計模式---模板方法模式

模板方法模式的定義理解: 模板方法:父類中定義好演算法的的完整執行框架,子類根據自身需求實現具體的演算法步驟; 比如珍珠奶茶的製作流程,可以總結出一套固定的執行流程, 1.先準備一杯清水河一個塑料杯子 2.在準備好的塑料杯中新增珍珠奶茶需要的原

Android原始碼設計模式模板方法模式

在面向物件開發中,通常會遇到這樣一個問題,我們知道一個演算法所需的關鍵步驟,並確定了這些步驟的執行順序,但是某些步驟的具體實現是未知的,或者說某些步驟的實現是會隨著環境的變化而改變的,例如,執行程式的流程大致如下: 1.檢查程式碼的正確性; 2.連結相關的類庫; 3.編譯相關的程式碼;

設計模式模板方法模式(行為型)

目錄 一、模式定義 二、模式角色 三、模式分析 四、具體例子 五、模式應用場景 一、模式定義 模板方法模式就是在一個抽象類中定義一些骨架方法,然後通過類繼承的方法,將一些方法延遲到繼承類裡。模板方法模式是一種類行為型模式,是一種比較常用的方法。不屬於物件行為型模式,因為只是通過

設計模式-模板方法模式

角色 抽象類(AbstractClass):實現了模板方法,定義了演算法的骨架。 具體類(ConcreteClass):實現抽象類中的抽象方法,已完成完整的演算法 舉個例子,以準備去學校所要做的工作(prepareGotoSchool)為例,假設需要分三

面向物件設計模式---模板方法模式(Template Method Pattern)

這幾天遇到了一些事,生活中有太多的不確定性,我所能做的就是做最好的自己。爭取能把這本《大話設計模式》的讀書筆記做完吧,說真的雖然現在只是Cover到知識點,還並沒有實戰,不過我想這就是一種積累。就像之前剛閱讀完的《深入淺出MySQL》高階部分一樣,雖然蠻多還是看不懂,畢竟我不是專

設計模式模板方法模式、策略模式、命令設計模式

一、模板方法模式 模板方法模式需要開發抽象類和具體子類的設計師之間的協作。一個設計師負責給出一個演算法的輪廓和骨架,另一些設計師則負責給出這個演算法的各個邏輯步驟。代表這些具體邏輯步驟的方法稱做基本方法(primitive method);而將這些基本方法彙總起來的方法叫做

行為型模式模板方法模式java版)

1.引入 模板方法模式就是當我們需要把某些細節層次,但器個別步驟的更詳細的實現卻是不同的時候,就需要用模板方法模式。實際上就是把一些更詳細的資訊在子類中去實現,這裡更詳細的資訊就是可變的資訊,因為每個

設計模式——模板方法模式Template Method Pattern

 我先設計個類圖: 非常簡單的實現,你要悍馬模型,我就給你悍馬模型,先寫個抽象類,然後兩個不同型號的模型實現類,那我們把這個程式實現出來: HummerModel抽象類的程式清單如下: package template.method.pattern; /** * 是

設計模式模板方法模式Template

           模板方法模式定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。 何時應用: 1、需要一次性實現演算法的不變部分,並