策略模式 Spring消除if else

2021-10-09 03:09:46 字數 1707 閱讀 7254

為了消除if-else

最近想把訊息服務的幾種下發方式通過策略模式整理一下,因為用的spring,直接上**

public

inte***ce

imessageservice

@component

public

class

iemailserviceimpl

implements

imessageservice

@override

public

void

sent

(string msg)

@component

public

class

ismsserviceimpl

implements

imessageservice

@override

public

void

sent

(string msg)

@component

public

class

iwechatserviceimpl

implements

imessageservice

@override

public

void

sent

(string msg)

@component

public

class

messagehandler

implements

initializingbean

private map

messageservicemap =

newconcurrenthashmap

<

>(8

);/** * 將imessageservice的類都按照定義好的規則(fetchkey),放入messageservicemap中

*/@override

public

void

afterpropertiesset()

/** *

* @throws bean***ception e

*/@override

public

void

throws bean***ception

/** * 通過key獲取對應的策略實現

** @param key key

* @return imessageservice

*/public imessageservice getmessagesender

(string key)

將來如果需要擴充套件起來也非常容易:只需在impl目錄下新增策略類,定義好對應的策略key,就可以了

public

void

throws bean***ception

或者通過註解獲取;

@autowired
實現了initializingbean的類,會在例項化bean的時候,呼叫其afterpropertiesset方法。

基於spring使用策略模式消除if else

當我們的 出現很多if else的時候,這時候 看起來是非常不美觀的,所以可以使用策略模式將if else消除。這次講的主要是基於spring的 public inte ce operationpublic class addoperation implements operation overri...

使用策略模式消除if else

最近專案中遇到如下情況 有乙個操作叫平帳,然後要對多個不同的款項進行平帳,目測有72種。然後平帳的方法只有乙個,在那個平帳方法裡面,判斷是哪一種款項,然後不同的款項有不同的處理邏輯。if 款項a if 款項b if 款項c 這個就很可怕了。因此使用策略模式來消除掉if else。先看使用策略模式之後...

策略模式及Spring整合策略模式

抽象策略類 inte ce sortservice 具體策略類 class insertionsortserviceimpl implements sortservice else arr j 1 tmp return arr 氣泡排序 class bubblesortserviceimpl imp...