目前常見的分層結構是包括展現層、業務邏輯層、持久層的。
那麼在業務邏輯層中,是會有非常多的複雜的業務邏輯判斷的,例如:
if (a.geta() == type.a) else if (a.geta() ==type.higher) else
} }}
這些if-else判斷是有非常多的弊端的
對於新的需求,**很難做出變更
隨著更多條件的加入,**效能顯著下降
如果要改變應用的行為,還需要重新編譯和重新發布應用程式
對於開發人員,難以修改**;對於領域專家,很難驗證業務邏輯,更別說修改業務邏輯
遇到這種情況來說,一種選擇是用一些設計模式去處理,最常見的就是策略模式,這種設計模式主要的核心就是將策略封裝成為類,並依賴於主題上下文中,,下面是策略模式例項的uml
圖:
這個模式在一定程度上是可以解除if
和else
帶來的判斷策略複雜性問題,而且能夠做到開閉原則,但是依舊沒有完全解決上面的那些弊端。並且這種設計模式還帶來了一些缺點,例如策略類的增加等。
其實還有一種選擇就是找乙個規則引擎工具,例如開源的drools
和商業的
ilog
等。規則引擎是一種巢狀在應用程式中的元件,實現了將業務規則從應用程式**中分離出來。規則引擎使用特定的語法編寫業務規則,規則引擎可以接受資料輸入、解釋業務規則、並根據業務規則做出相應的決策。下面是加入規則引擎和沒有加入規則引擎的對比圖:
利用規則引擎可以解決很多if-else帶來的弊端,這裡包括:易於理解;提高了可維護性;可處理更複雜的業務邏輯;靈活;合理的效能;;可重用等。
但是這種工具也是會有一定的侷限性和缺點,例如:規則引擎只是將事情變得簡單些,它不是****;開發人員需要站在業務人員角度制定規則;如果不懂得規則引擎的執行模式,除錯規則會有些困難;規則引擎消耗記憶體等。
在遇到業務邏輯層負責策略的時候,需要根據不同的情況來進行選擇,其實目的都是一致的,就是物件導向的好處--
易維護、易擴充套件、高質量等。
業務邏輯處理
功能的實現,都是依靠業務邏輯來完成的,記得看過不能完成業務邏輯的程式設計師都不會成長的,確實是的,最近在完成業務邏輯的時候,程式的業務判斷有很多的,所以開始接觸,設計模式,看到來一些設計模式,看結合專案,確實是可以根據設計模式來改寫的,so,懂得設計模式可以快速的,寫好的 的。關於函式同步和非同步之...
6 2 業務邏輯之打通業務處理脈搏實戰
支撐執行緒池的運作主要靠兩個函式 pthread cond signal m pthreadcond 觸發 pthread cond wait m pthreadcond,m pthreadmutex 等待 unix環境高階程式設計 11章 執行緒,11.6.6 條件變數 m pthreadcond...
選擇珠寶js業務邏輯原始碼
珠寶定製類 珠寶選擇控制項 function custom customcontent this.tabmenuchange 初始化選項卡效果 this.selectstonemain 初始化選擇石頭區域選項卡 this.determinestonebtnclick 初始化化確定按鈕的單擊事件 va...