Spring中使用設計模式(一 策略模式)

2021-10-10 09:49:10 字數 1129 閱讀 3606

前幾天看到新來的同事桌上有一本設計模式的書,想起許多年前自己啃厚厚的模式時,始終昏昏欲睡,不得要領那段時光。重整思路,結合spring,寫下現在在開發中常用的設計模式使用方式。

在工作中最常用的就是策略模式了,也可以說是策略模式的簡化版。客戶端可以決定用那種策略,呼叫上下文,上下文使用具體策略做具體的處理。

策略模式的本質是,分離演算法,選擇實現。如果沒有中間的上下文,用介面抽象出策略的行為,客戶端呼叫即可。

以終為始,先上客戶端測試**,具體如下:

@test

void

should_get_select_paymethod_when_client_selected_some_pay_method()

那麼客戶端需要許多寫if else來支援麼?不必,使用策略模式,或者重構出介面,再使用spring bean的構造,通過map管理各個策略元件。客戶選擇哪種支付方式,從map中get出來就ok。

上下文中維護策略map,具體如下:

@service

public

class

paycontext);

}public string pay

(string paytype)

}

ipaystr是支付方式的介面,所有具體的支付方式都有pay()一種行為。

public

inte***ce

ipaystr

public string getdesc()

}}

上下文中map的key是什麼呢?就是客戶傳過來的報文中的列舉值(實際專案中可能有更多種組合方式)。在介面裡可使用defindetype(),規定各個實現類必須初始化乙個不重複的值即可。

@component

public

class

wxpaystrimpl

implements

ipaystr

@override

public paytype defindetype()

}

這樣,**中沒有顯示的if else,如果新增更多種支付方式,實現ipaystr,再新寫一種列舉值即可。

Spring 中使用了那些設計模式呢?

一 spring 中常見的設計模式 工廠模式 beanfactory 模式 aopproxy 委派模式 dispatcherservlet 介面卡模式 handlerapdapter 模板方法模式 jdbctemplate 觀察者模式 contextloaderlistener 二 spring 的...

Spring中使用Quartz 一

quartz使用 開發環境 spring2.0。如果包類沒有quartz包,則需要加入到類路徑。a extends quartzjobbean方法 建立乙個job packageonlyfun.bb.quartz importorg.quartz.jobexecutioncontext import...

在spring中使用工廠模式

bean的建立預設就是框架利用反射new出來的bean例項 工廠模式 工廠幫我們建立bean 有乙個專門幫我們建立物件的類,這個類就是工廠 假設有乙個飛機類airplane,那麼工廠模式中飛機的建立方法就是 airplane ap airplanefactory.getairplane string...