用策略模式替代switch case

2021-10-05 03:24:17 字數 1382 閱讀 6188

switch case 看著方便,但是如果後期要加入條件:

還要修改原**,導致回歸測試,測試成本增加

不遵循開閉原則(對修改關閉,對拓展開放)

所以,我選擇了策略模式來解決該問題。。。

一,首先了解下業務(大概說一下):

欄位eventtype有多種情況(org_dept_create,org_dept_modify,org_dept_remove,。。。。),不同情況下走不同得邏輯

二,用switch case的**,實際上有十幾個條件呢,這裡舉例3個。

switch

(eventtype)

三,使用策略改寫

首先寫策略類

public

inte***ce

callbackstrategy

寫具體的策略

@slf4j

@service

public

class

orgdeptcreate

implements

callbackstrategy

return

false;}

@override

public

void

getcallback

(jsonobject obj)

}

@slf4j

@service

public

class

orgdeptmodify

implements

callbackstrategy

return

false;}

@override

public

void

getcallback

(jsonobject obj)

}

@slf4j

@service

public

class

orgdeptremove

implements

callbackstrategy

return

false;}

@override

public

void

getcallback

(jsonobject obj)

}

四,具體使用方**

@slf4j

@restcontroller

public

class

callbackcontroller}}

}

用Emit技術替代反射

system.reflection.emit命名空間類可用於動態發出microsoft中間語言 msil 以便生成的 可以直接執行。反射也用於獲取有關類及其成員的資訊。換句話說,反射是一種技術,允許您檢查描述型別及其成員的元資料,你可能以程式設計方式訪問過元件物件模型型別庫,net中的反射非常相似,...

SQL 怎麼用EXISTS替代IN

我們在程式中一般在做sql優化的時候講究使用exists帶替代in的做法,理由是exists執行效率要比in高。之前我一直挺懵懂的一件事情是如何使用exists來替換in呢,二者表示的意義又是什麼呢?今天就我個人理解記錄一下 in表示範圍,指某一字段在某一範圍之內,這個範圍一般使用子查詢來獲取,由此...

模式 策略模式

前言 所有的設計模式都是基於程式設計屆前輩們的不斷實踐得出的解決一類問題中比較有效高效的程式設計方法。策略模式 策略模式用於解決業務中不同場景下統一行為的細微差別問題。策略模式遵循 開閉原則 舉個例子來說,在購物車功能中,結算 的時候會根據使用者的不同級別去打折,那麼打折計算 的這一行為就會有不同演...