設計模式之模板模式

2022-07-05 08:09:13 字數 1990 閱讀 2380

一 什麼是模板模式

模板模式是在乙個抽象類中定義了執行它的方法的方式(模板方法),由抽象類的子類根據具體的業務需求去重寫父類的中方法,但執行時將呼叫抽象類中定義的方式進行。

二 模板模式原理分析

在模板模式中,我們需要2個類,如下圖

1 抽象的父類:在父類中,我們定義模板方法;

2具體的實現的子類:在子類中,重寫父類中定義的模板方法,不同的子類,可以按照各自不同的業務邏輯去實現,以供呼叫

三 模板模式舉例實現

舉個例子,用**簡單的實現模板模式

首先,我們將支付相關方法提取出來,定義抽象類模板方法,pay方法是我們的骨架方法,具體由其他方法完成,

1

public

abstract

class

abstractpayment

1112

public

void

beforepay()

1415

public

void

dopay()

1718

public

void

afterpay()

20 }

其次,根據支付方式,完成對應的實現(支付類繼承並重寫父類方法)

1 支付寶支付類

1

public

class alipay extends

abstractpayment 78

@override

9public

void

dopay()

1213

@override

14public

void

afterpay()

17 }

1

public

class wxpay extends

abstractpayment 78

@override

9public

void

dopay()

1213

@override

14public

void

afterpay()

17 }

3 現金支付類

1

public

class cashpay extends

abstractpayment 78

@override

9public

void

dopay()

1213

@override

14public

void

afterpay()

17 }

四 測試上邊簡單的模擬實現了模板模式,抽象類的子類根據各自業務邏輯分別重寫了beforepay,dopay,afterpay方法。我們寫個main方法做個測試

1

public

static

void

main(string args)

控制台輸出結果如下

上邊這個例子中,我們把不變的方法pay交給抽象父類管理,可變的方法beforepay,dopay,afterpay交給子類做擴充套件實現,**看起來很統一,出現問題時也很容易定位問題。但也存在乙個類似靜態**的缺點,就是如果我們有很多種支付方式時,我們就需要寫很多個支付子類去繼承抽象類,進而導致很多的物件類檔案,系統也會變得很龐大。

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

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

設計模式之模板設計模式

模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。模板方法模式是通過把不變行為搬到超類,去除子類中的重複 來體現它的優勢。當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複...

設計模式之模板設計模式

在父類中定義好演算法的骨架,然後在子類中去實現。總的來說就是父類中定義需要實現的總方法,然後在子類中去依次實現它 當然根據物件的不同,所實現的具體細節不同。下面來看乙個例子 在父類中我們定義三個抽象的方法job 在子類中去實現它。子類中執行execute方法 job1 如果當前時間能整除2 則執行j...