設計模式 模板模式

2021-10-10 16:52:19 字數 1555 閱讀 8047

基本介紹

模板方法模式(template method pattern),又叫模板模式(template pattern),在乙個抽象類公開定義了執行他的方法的模板。他的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行

簡單的說,模板方法模式定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構,就可以重新定義該演算法的某些特定步驟

這種型別的設計模式屬於行為設計模式

模板方法模式的鉤子方法

在模板方法模式的父類中,我們可以定義乙個方法,他預設不做任何事情,子類可以視情況要不要覆蓋它,該方法稱為「鉤子」

模板方法模式的注意事項和細節

基本思想是:演算法只存在於乙個地方,也就是在父類中,容易修改。需要修改演算法時,只要修改父類的模板方法或者已實現的步驟,子類就會繼承這些修改

實現了最大化**復用。父類的模板方法和已實現的某些步驟會被子類繼承而直接使用

既統一了演算法,也提供很大靈活性。父類的模板方法確保了演算法的結構保持不變,同時由子類提供步驟實現

改模式的不足之處:每乙個不同的實現都需要乙個子類實現,導致類個數增加,使得系統變得很龐大

一般模板方法上都加上final關鍵字,防止子類重新模板方法

模板方法使用場景:當要完成某個過程,該過程要執行一系列步驟,這一系列的步驟基本相同,但其個別步驟在實現時可能不同,通常考慮用模板方法模式處理

**實現

以製作不同種類的豆漿為目的進行實現

//抽象類,表示豆漿

public

abstract

class

soyamilk

//新增配料,子類具體實現

public

abstract

void

addcondiments()

;//鉤子方法,決定是否需要新增配料

public

boolean

customerwantcondiments()

public

void

select()

public

void

sock()

public

void

beat()

}public

class

peanutsoyamilk

extends

soyamilk

}public

class

puresoyamilk

extends

soyamilk

@override

public

boolean

customerwantcondiments()

}public

class

redbeansoyamilk

extends

soyamilk

}//客戶端進行呼叫

public

class

client

}

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

模板設計模式 設計模式之模板模式

模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...

設計模式 模板設計模式

1 抽象類 abstractclass類中實現了模板方法 template 定義了演算法的骨架,具體子類需要去實現,抽象方法operationr2,3,4 template operationr2,3,4可以是抽象方法,也可以是實現方法 如果是抽象方法,需要到子類實現即可 2 實現類 concret...