開放封閉原則與規則引擎設計模式 - devgenius

banq發表於2022-02-10

SOLID原則是美國軟體工程師和講師羅伯特·C·馬丁 (Robert C Martin) 提倡的眾多原則的一個子集,他被稱為“鮑勃大叔”。在本文中,我將討論S {O} LID原則之一,即開閉原則(OCP)。

我會使用 C# 來演示程式碼,但 OCP 與語言無關。

OCP的官方定義是:

軟體實體(類、模組、函式等)應該對擴充套件開放,對修改關閉。

 

OCP 的好處

OCP 推薦的做法可以輕鬆升級軟體應用程式。想象一個 WhatsApp 想要擴充套件聊天服務以向 Facebook Messenger 傳送訊息的用例。

開發人員希望重用聊天服務的相關元件。有兩種方法可以做到這一點。

  1. 修改現有聊天服務以支援新要求。它會將聊天服務程式碼暴露給錯誤。聊天服務的複雜性會增加,自動化測試用例可能會失敗。
  2. 使用相關元件擴充套件聊天服務程式碼。為支援新功能而編寫的程式碼將採用新類的形式,但將從聊天服務的核心功能中受益。這種方法的好處是可以獨立部署和測試新功能。

規則引擎設計模式是遵守 OCP 的眾多方法之一。許多其他設計模式允許我們遵循 OCP,但我將本次會議限制為規則引擎設計模式,這是展示 OCP 功能的最簡單方法之一。

 

規則引擎

幫助開發人員遵循 OCP 的流行設計模式之一是規則引擎設計模式。開發具有處理同一實體的多個複雜業務規則的軟體應用程式是一種有效的設計模式。

業務規則可能是相關的和複雜的。可能涉及很多複雜的分支和條件邏輯。遵循 OCP 將使開發人員能夠獨立新增、刪除或禁用業務結果。

開放封閉原則與規則引擎設計模式 - devgenius

規則引擎有兩個元件:

  1. 規則引擎 — 對實體執行所有規則以產生結果的引擎。
  2. 業務規則——規則定義處理邏輯或條件。

 稅務計算器

讓我們嘗試為稅收計算器應用程式實現規則引擎設計模式。稅收計算是一個複雜的過程,取決於許多因素,如年齡、總收入、居民身份等。許多業務規則評估這些因素以確定稅額。政府政策推動了這些業務規則,並且可以經常更改它們。在這個用例中,我將使用規則引擎設計模式來保持這些業務規則的獨立性。

完整的程式碼可以在https://github.com/tarunbhatt9784/TaxCalculator.git

 

相關文章