3 模板方法模式

2021-10-02 20:56:13 字數 1456 閱讀 7819

下面就針對上面舉的例子簡單介紹一下模板方法的具體用法

public

class

order

public integer getamount()

public

void

setamount

(integer amount)

public bigdecimal getprice()

public

void

setprice

(bigdecimal price)

public string getpaychannel()

public

void

setpaychannel

(string paychannel)

}

首先定義乙個訂單類,只有這個例子需要的幾個屬性

public

abstract

class

basepay

//真實付款

protected

abstract

boolean

realpay

(bigdecimal totalprice)

;private bigdecimal calculatetotalprice

(order order)

}

這裡定義模板方法的抽象類,定位支付任務的執行步驟。第一步計算總價,第二步發起支付。第一步計算總價實現都是一樣的,所以抽象類也可以說是基類直接實現,第二步不同的支付方式具體實現不一樣,所以定義為抽象方法,由具體支付方式實現。

public

class

alipay

extends

basepay

}public

class

wxpay

extends

basepay

}

public

class

orderservice

private

static

boolean

payorder

(order order)

private

static

void

paychannelinit()

}

定義不同的訂單實體,然後根據訂單的支付渠道這個屬性獲取對應的支付方式,然後支付訂單。如果這時候再接入乙個銀聯支付,實現也很簡單,也不用改動原來的**,增加乙個銀聯支付的實現類,加入支付渠道的集合中就可以了,這裡也充分體現了開閉原則,對擴充套件開發,對修改關閉。銀聯實現如下

public

class

unionpay

extends

basepay

}

java設計模式3 模板方法

定義 模板方法模式定義了乙個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法 的結構即可重定義該演算法的某些特定步驟。public abstract class personday 將行為的具體實現延遲到子類中完成,達到不同的實現效果。public abstract...

設計模式筆記3 模板方法

設計模式的應用不宜先入為主,一上來就使用設計模式是設計模式的最大誤用 沒有一步到位的設計模式,敏捷軟體開發提倡的是 refactoring to patterns 定義乙個操作中的演算法的骨架 穩定 而將一些步驟延遲 變化 到子類中。template method使得子類可以不改變 復用 乙個演算法...

模板方法模式

有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...