整潔架構系列
整潔架構目的:最小化-建置和維護系統所需人力
在整潔架構中,除了實體(Entities)和用例(Use Cases)之外,還有一些其他元素,如閘道(Gateways)、呈現者(Presenters)、控制器(Controllers)、Web/UI/DB/外部介面(Interfaces),它們有助於組織和管理系統的不同方面。
閘道(Gateways): 閘道是用於系統與外部資源(例如數據庫、第三方服務等)進行交互的介面。它們提供了對外部資源的讀取和寫入操作,並將其與用例和實體分離。閘道可以是數據庫閘道、API 閘道、檔案系統閘道等,根據需要適應不同的外部資源。
呈現者(Presenters): 呈現者負責將用例的結果轉換為適合特定介面(如使用者界面)呈現的格式。它們將用例的輸出轉換為可供使用者理解的形式,並根據需要格式化和展示數據。呈現者將用例的結果與介面分離,使得用例不依賴於具體的呈現方式。
控制器(Controllers): 控制器負責接收外部輸入(如使用者請求)並將其轉發給適當的用例進行處理。控制器處理路由、驗證輸入、協調用例的執行等工作,並將用例的結果返回給呈現者或外部介面。控制器幫助將用例的執行與外部介面之間進行解耦,並提供統一的輸入接口。
Web/UI/DB/外部介面(Interfaces): 這些介面是系統與外部組件進行通信和交互的地方。Web 介面可能是使用者通過瀏覽器與系統進行交互的界面,UI 介面可能是應用程序的圖形用戶界面,DB 介面可能是系統與數據庫進行交互的接口,外部介面可能是系統與其他外部服務或系統進行通信的接口。這些介面應該與核心業務邏輯分離,以保持整潔架構的原則。
這些元素在整潔架構中協同工作,以確保系統的結構清晰且易於理解、擴展和維護。它們的職責如下:
- 實體(Entities):代表系統中的核心概念和業務實體,包含與其自身相關的業務邏輯,並保持獨立於具體技術細節。
- 用例(Use Cases):實現系統的特定功能或操作,處理外部輸入並協調實體之間的交互。用例封裝了核心的業務邏輯。
- 閘道(Gateways):提供與外部資源進行交互的介面,例如數據庫、第三方服務等。閘道將外部資源的讀寫操作與用例和實體分離,使其具有獨立性。
- 呈現者(Presenters):將用例的結果轉換為特定介面(如使用者界面)可理解的格式。呈現者負責格式化和展示數據,將用例的結果與介面分離。
- 控制器(Controllers):接收外部輸入並將其轉發給適當的用例進行處理。控制器處理路由、驗證輸入、協調用例的執行等工作,與外部介面解耦用例的執行。
- Web/UI/DB/外部介面(Interfaces):系統與外部組件進行通信和交互的地方。這些介面應該與核心業務邏輯分離,以保持整潔架構的原則。
整潔架構的目標是確保系統的不同元素相互解耦,每個元素都有明確的職責和界限,從而提高代碼的可讀性、可維護性和可重用性。這種組織結構使得修改和擴展變得更容易,並且減少了不必要的相互依賴和錯綜複雜的關係。
也必須依據SOLID設計原則,詳細的SOLID設計原則
參閱 https://dotblogs.com.tw/bda605/2022/11/06/004528
元哥的筆記