Clean Architecture是Robert C. Martin(Bob大叔)提出的軟體設計理念,旨在創造一個易於理解、靈活且可維護的系統。它強調關注點分離,確保應用程式的業務邏輯與其依賴項(例如框架、資料庫和使用者介面)分離。
定義:
乾淨架構是一種分層架構,它將程式碼組織成一組同心圓,每個同心圓代表應用程式的不同層。這些層包括實體、用例、介面適配器和框架/驅動程式。核心思想是內層應該獨立於外層,使系統更加模組化並且更容易測試。
原則:
關注點分離:每一層都有不同的職責,這有助於管理複雜性並提高程式碼可讀性。
依賴規則:原始碼依賴只能指向內部。內圈中的任何事物都無法了解外圈中的任何事物。
獨立於框架:架構不應依賴任何外部框架。即使框架發生變化,這也使得應用程式的核心保持穩定。
可測試性:業務規則可以獨立於 UI、資料庫和其他外部相依性進行測試。
靈活性和可維護性:系統可以在整體結構不發生重大變化的情況下進行演進,從而更容易維護和擴展。
提高可測試性:透過將業務邏輯與外部依賴解耦,可以更輕鬆地編寫單元測試並實現更高的測試覆蓋率。
靈活性:對系統的某一部分進行更改(例如,更換資料庫或 Web 框架),而對其他部分的影響最小。
可維護性:清晰的關注點分離和模組化使程式碼庫更易於理解、維護和擴展。
可重複使用性:業務邏輯可以在不同的專案或元件之間重複使用,減少冗餘。
可擴展性:乾淨的架構有助於擴展應用程式,無論是在處理增加的負載還是加入新功能方面。
實體:代表應用程式的核心業務物件。它們封裝了最通用和高級的規則。它們通常是包含業務規則和邏輯的豐富域物件。
應用程式核心:包含特定於應用程式的業務規則。它們定義應用程式需要執行的作業,封裝和實作系統的所有用例。
基礎架構:將資料從最適合使用案例和實體的格式轉換為最適合外部機構(例如資料庫、Web、UI 或外部服務)的格式。
使用者介面:包括 UI、資料庫、Web 框架以及任何其他外部工具或交付機制。它們是最外層,程式碼量最少。
為了更好地理解 Clean Architecture,我們來看看對應的圖:
圖表:
在此圖中,實體是定義基本屬性和行為的核心業務物件。應用程式核心封裝了特定於應用程式的業務邏輯,定義了應用程式應該做什麼。基礎設施處理用例與外部世界之間的交互,例如 Web 請求和資料庫存取。最後,使用者介麵層包括 Web 框架、資料庫和其他外部相依性的實際實作。
透過以這種方式組織應用程式,您可以實現關注點的清晰分離,使您的程式碼庫更加健壯、可測試和可維護。
了解和實施清潔架構可以顯著提高軟體專案的品質和壽命。透過遵守其原則,您可以確保您的應用程式保持靈活、可維護和可擴展,以便適應未來的需求和技術。請繼續關注我們系列的下一部分,我們將深入探討微服務的概念以及它們如何與 .NET 8 中的 Clean Architecture 整合。
原文出處:https://dev.to/moh_moh701/part-1-what-is-clean-architecture-4bn1