1. 程式人生 > >從抽象類到模板方法模式

從抽象類到模板方法模式

當多個類出現相同功能時候,但是功能主體不同。這時可以進行向上抽取,這時只抽取功能定義而不抽取功能主體。這時候就產生了抽象方法,含有抽象方法類叫做抽象類。

抽象類的特點

1.抽象方法一定在抽象類中

2.抽象方法和抽象類都必須被abstract關鍵字修飾

3.抽象類不可以new建立物件。因為呼叫抽象方法沒有意義(抽象方法沒有方法體)。

4.抽象類中的方法要被使用,必須由子類覆寫所有的抽象方法後,建立子類的物件呼叫,如果子類只覆蓋了部分的抽象方法,那麼該子類也是抽象類。

抽象類和一般類沒有太大不同

在描述事物的時候,有一些不確定的部分,也是該事物的功能,需要明確出現,但是無法定義主體。這個時候就通過抽象方法表示。

模板方法

定義一個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。其實平時我們在編寫程式也是常常這樣做的,只是我們不知道其叫模板方法模式而已。

下面是模板方法使用模板:

//抽象的模板類
public abstract class AbstractTemplateClass
{
	protected abstract void dosomething();
	protected abstract void doOtherthing();
	
	//模板方法,實現對基本方法的排程
	public void templateMethod()
	{
		this.dosomething(); //子類覆寫父類方法後,呼叫的就是相應子類物件的方法
		this.doOtherthing();//子類覆寫父類方法後,呼叫的就是相應子類物件的方法
	}
}
public ConcreteClass1 extends AbstractTemplateClass
{
	//子類覆寫抽象類方法
	protected abstract void dosomething()
	{
		//code
	}
	protected abstract void doOtherthing()
	{
		//code
	}
}

public ConcreteClass2 extends AbstractTemplateClass
{
	//子類覆寫抽象類方法
	protected abstract void dosomething()
	{
		//code
	}
	protected abstract void doOtherthing()
	{
		//code
	}
}

public class ClientTest
{
	public static void main(String []args)
	{
		AbstractTemplateClass c1=new ConcreteClass1();
		AbstractTemplateClass c2=new ConcreteClass2();
		
		//直接呼叫模板方法,實現功能
		c1.templateMethod();
		c2.templateMethod();
	}
}


相關推薦

設計模式零開始——模板方法模式

“橫看成嶺側成峰,遠近高低各不同” 說的就是山是同一座山,但是不同的人站在不同的角度,看到的山的樣子也不一樣。就像最近在看一檔節目,叫做《最強大腦》,裡面都是天才、神童、天之驕子,都是站在智商頂峰的一群人,對於節目中難到變態的題目,我只會笑一笑然後放棄,但是那些天才們經過一陣頭腦風暴後,問題

抽象模板方法模式

當多個類出現相同功能時候,但是功能主體不同。這時可以進行向上抽取,這時只抽取功能定義而不抽取功能主體。這時候就產生了抽象方法,含有抽象方法類叫做抽象類。 抽象類的特點 1.抽象方法一定在抽象類中 2.抽象方法和抽象類都必須被abstract關鍵字修飾 3.抽象類不可以new

模板方法模式深入理解Java抽象

二話不說先上程式碼,如下所示為一個抽象類(抽象汽車模型)與它的兩個具體實現類(寶馬模型、賓士模型)的模擬程式: /* * 抽象模板類,抽象汽車模型 */ public abstract class

C#設計模式之行為模式模板方法模式

frame 應該 ocp 方式 src 代碼復用 操作 優缺點 sse 定義(Template Method) 定義一個操作中算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 啟示 組裝電腦一般包含三個部分,主機、顯示

設計模式 十九 模板方法模式Template method(行為型)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

單例模式、工廠模式抽象模式模板方法模式

一:單例模式 1.定義:單例模式確保某一個類智慧建立一個物件。 2.單例模式的實現主要是把構造器設定為private,外部通過Singleton.getInstance()來訪問。通用類圖: 3.單例模式實現的三種方式: (1)立即載入/餓漢模式,即在呼叫方法前,例項已經

交給子: Template Method(模板方法模式)【PHP】

pri align 子類 特定 itl area 圖結構 -a abs Template Method(模板方法模式) ---- 將具體處理交給子類 Template Method 就是定義一個操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法

模板方法模式

abstract cli args rtu pan virtual rri spi cab // 客戶端調用 class Client { static void Main(string[] args) {

模板方法模式-TemplateMethod

抽象類 size 混合 blog 子類 封裝性 不改變 就會 靈活性 模板方法模式:定義一個操作中的算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的機構即可以重定義算法的某些特定步驟。   模板方法模式是通過吧不變形為搬移到超類,去除子類中的重復代碼

設計模式 - 模板方法模式

col closed abs concrete style package println -1 san 定義:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。 模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。 角色: 抽象類(Ab

Java學習筆記——設計模式之七.模板方法模式

tro mage emp java學習 java學習筆記 trac 子類 技術 primitive 模板方法模式(TemplateMethod),定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。

模板方法模式(think in java中的設計模式

方法 bst pac code pri ack 單點 size clas 模板方法模式:模板方法模式顧名思義就是一種構造模塊化的設計模式。將一次行為分為多種行為,靈活的調用不同模塊進行工作。比如在飯店吃飯,分為:點菜,吃飯,買單等行為無論什麽飯店大致都是這三種行為。因此我們

第十話-模板方法模式

主類 分享 system 封裝 pap 廣泛 alt 我們 urn 一個mo子裏刻出來的?NO,NO,NO應該是一個mu子裏立馬出來的。今天看了模板方法模式,一起學習了。 一、什麽是模板方法模式? 定義:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。使得子類能夠

java設計模式----模板方法模式

抽象類 子類 底層 代碼 做事 方法 模板 期待 代碼復用 模板方法模式:   在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些實現。 好萊塢原則:   別調用(打電話給)我們,我們會調用(打電話給

設計模式解密(4)- 模板方法模式

編程人員 自己 ack 層次 check target hub 提取 images 1、簡介 定義:一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結構即可重定義該算法中的某些特定步驟。 模板方法模式,一般是為了統一子類的算法實現步驟,所使用

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

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

java設計模式模板方法模式

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

《JAVA與模式》之模板方法模式

cal php pri jsm vsm uft tmp throw tox 模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體構造函數的形式實現,然後聲明一些抽象方法來迫使子類實現剩余的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩余的邏輯

面向對象編程思想-模板方法模式

uid 導致 是否 img start set ctc else 感謝 一、引言 說到模板,顧名思義:就是樣板,整體架構已經有了,你只需要填充自己的特定內容就可以了。如:簡歷模板,論文模板,PPT模板等 在軟件設計中,模板方法模式與之很相似,下面請看我們今天要學習的模板方法

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

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