1.概述
在實際開發中通常遇到根據傳入引數不同選擇不同的service執行相應的邏輯,例如:商場結賬有多種結算模式,會員以會員價結算,內部員工以內部員工價結算,普通客戶按原價結算,後端實現就會根據客戶身份不同選擇不同的結算方式,通常以if…else…方法處理,但如果客戶型別較多,計價模式過多那麼將會寫許多if…else分支,顯然**層面不友好,而且也不利於後期業務擴充套件和維護,因此我們可以選擇策略模式實現。2.**繼承關係圖
我們定義了介面userdao
,它有兩個實現分別為userdaoaimpl
和userdaobimpl
,我們根據傳入型別不同進行選擇
3.定義userdao
實現userdaoaimpl
和userdaobimpl
@service
public
class
userdaoaimpl
implements
userdao
}@service
public
class
userdaobimpl
implements
userdao
}
4.定義userenum
定義關係(寫死beanname方式)public
enum userenum
public string getname()
//根據型別獲取列舉
public
static userenum getbytype
(string type)}}
return null;
}}
5.定義userservice
根據傳入型別選擇具體實現@service
public
class
userservice
}
注意:通過private mapmap
spring容器會將userdao實現放入該集合中,key對應username,value對應具體實現6.呼叫服務
public
class
maintest
}
結果輸出userdaobimpl
中query列印輸出,同理傳入"a"則列印userdaoaimpl
中列印1.此種方式較第一種方式靈活,但**量多一些,兩種方式均適用,大家可以根據自己需要選擇2.spring整合策略模式非常方便,同時也可加上模板模式,對於某些固定功能處理起來更加方便 策略模式及Spring整合策略模式
抽象策略類 inte ce sortservice 具體策略類 class insertionsortserviceimpl implements sortservice else arr j 1 tmp return arr 氣泡排序 class bubblesortserviceimpl imp...
Spring整合策略設計模式
簡單策略設計模式詳解 策略頂級介面 author zrh date 2020 12 23 12 00 策略實現的抽象方法 param t void insertorupdate t t 策略實現類,並自定義bean名 author zrh vesion 1.2.0 time 2020 12 23 1...
Spring資源訪問設計與策略模式應用
spring把所有記錄資訊的載體,例如各種型別的文字配置檔案,二進位制檔案,網路資源等都統一做了乙個高度的抽象,稱為資源 resources spring中最常見的就是xml配置檔案和properties配置檔案。spring為資源訪問提供了resource介面,該介面提供了強大的資源範問能力,例如...