策略模式在工作的中的簡單應用

  最近閒的沒事決定重溫下常見的設計模式,順便結合工作中的一些運用記錄下這篇筆記,本文先來聊聊策略模式!

    策略模式也是比較常見的一種設計模式了,簡單來說,就是某一功能的實現具有不同的實現邏輯,但是最終完成的動作都是一致的,這時候想要實現這一功能就需要我們針對這一功能的不同實現定義不同的算法,比方說流程場景中常見的工單處理功能, 某員工需要提交一份報銷工單,假如需要經過財務審批,領導簽字,財務撥款,發起人確認是否收到這一系列流程,處理工單是一個功能,財務審批,領導簽字,發起人確認某種意義上說都是在處理這一工單,相當於處理工單的不同實現,我們可以套用策略模式來 實現這份報銷功能,具體代碼實現如下:   

  1.定義處理工單的接口,如下圖:

 

  2.根據需要定義對應實現類,這裏只定義了審批工單,處理工單和確認工單是否完成這三個實現類

 

 

 

 

 

   3.定義處理工單接口,根據不同的處理類型自動匹配具體的實現類

 

     上面就是策略模式的簡單實現了,策略模式還可以用來替代if else的多層嵌套問題,因爲其相對靈活,比方說上述流程還需新增一個工單回退的功能,只需新增一個處理回退邏輯的實現類再配置對應策略即可實現,所以策略模式還符合開閉原則;

由於其所有策略實現的邏輯存在於不同的實現類,大家各司其職,所以一定程度上保護了這些實現的算法不被直接公開,具有一定的安全性;

    上面都是策略模式的優點,但其缺點也很明顯,即新增一個策略就必須新建一個策略類,增加了代碼的維護成本;另外,如果策略的調用者需要該策略提供的所有功能那麼其必須知道所有的策略,所以一定程度上也增加了調用成本,所以我們在實際

應用時一定要根據自己的使用場景來正確選擇策略模式的使用!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章