設計模式之委派模式和策略模式

2021-10-25 18:43:58 字數 2940 閱讀 6162

一、委派模式

委派模式(delegate pattern)的基本作用就是負責任務的呼叫和分配任務,跟**模式很像,可以看做是一種特殊情況下的靜態**的全權**,但是**模式注重過程,而委派模式注重結果。

舉例:老闆(boss)給專案經理(leader)下達任務,專案經理會根據 實際情況給每個員工派發工作任務,待員工把工作任務完成之後,再由專案經理匯報工作進度和結果給老闆。

建立員工iemployee介面

public inte***ce iemployee
建立員工employeea類

public class employeea implements iemployee}
建立員工employeeb類

public class employeeb implements iemployee}
建立專案經理的類

public class leader implements iemployee//專案經理自己不幹活public void doing(string command)}
建立boss類下達命令

public class boss}
測試**類

new boss().command("登入",new leader());
上述**能夠很好的反映專案經理分配工作的場景,也是委派模式的體現​。

二、策略模式

​    ​策略模式(strategy pattern)是指定義了演算法家族、分別封裝起來,讓它們之間可以互 相替換,此模式讓演算法的變化不會影響到使用演算法的使用者。

應用場景

優點​:

缺點​:

舉例

​京東**有時候會有很多優惠活動,比如​:領取優惠券抵扣、返現**、拼團優惠

建立**策略類

public inte***ce promotionstrategy
然後分別建立優惠券抵扣策略 couponstrategy 類、返現**策略 cashbackstrategy 類、拼團優惠策略 groupbuystrategy 類和無優惠策略 emptystrategy 類: 

public class cashbackstrategy implements promotionstrategy}
public class couponstrategy implements promotionstrategy}
public class emptystrategy implements promotionstrategy}
public class groupbuystrategy implements promotionstrategy}
建立**活動類

public class promotionactivitypublic void execute()}
測試類

promotionactivity activity618 = new promotionactivity(new couponstrategy());promotionactivity activity1111 = new promotionactivity(new cashbackstrategy());activity618.execute();activity1111.execute();
上述**驗證沒有問題,但是實際情況若是出現很多活動,那麼我們就需要更改驗證,所以我們可以優化下,結合單例和工廠模式做下重構

建立工廠類

public class promotionstrategyfactoryprivate static final promotionstrategy non_promotion = new emptystrategy();private promotionstrategyfactory(){}public static promotionstrategy getpromotionstrategy(string promotionkey)private inte***ce promotionkey
客戶端**可以這樣寫

string promotionkey = "groupbuy";promotionactivity promotionactivity = new promotionactivity(promotionstrategyfactory.getpromotionstrategy(promotionkey));promotionactivity.execute();
具體用到的哪一種活動是前端傳入的引數,這樣的話就不影響原來的處理邏輯了​!

設計模式之委派模式

總體來說設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式...

設計模式之委派模式

委派模式 負任務的呼叫和分配任務。和 模式很像,可以看做是一種特殊靜態的 的全權 模式注重過程,委派模式注重結果。委派模式在spring中應用非常多,dispatherservlet就用到了委派模式,在spring原始碼中,以delegate結尾,都是使用了委派模式的。beandefinitonpa...

設計模式之委派模式

1.委派物件本身不知道如何處理乙個任務 或乙個請求 把請求交給其它物件處理 2.實現程式的解偶.通過任務委派能夠將乙個大型的任務細化,然後通過統一管理這些子任務的完成情況實現任務的跟進,能夠加快任務執行的效率任務委派方式需要根據任務的複雜程度進行不同的改變,在任務比較複雜的情況下可能需要進行多重委派...