1. 程式人生 > >領域驅動設計架構風格

領域驅動設計架構風格

des 設計 表達 對象 切入點 解決 基於 1.5 pattern

領域驅動設計 (DDD) 是面向對象的軟件設計方法,基於業務領域、元素和行為,以及它們之間的關系。其目標是將潛在業務領域的實現用業務領域專家語言定義的領域模型來表達出來。領域模型可以看一個框架,讓業務變得有條理的解決方案。

要應用領域驅動設計,您必須對您想建模的業務領域有很了解, 或者熟練掌握這些業務知識。開發團隊將經常與業務領域專家合作來創建模型。架構師,開發人員和主題專家有著不同的背景,在許多環境中將使用不同的語言來描述他們的目標,設計和要求。 而在域驅動設計中,整個團隊統一使用一種專註於業務領域的單一語言,並不包括任何技術術語。

軟件的核心是域模型,它是這個共享語言的直接投影,它允許團隊通過分析圍繞在軟件周邊的語言快速找到切入點。通用語言的創建不僅僅是接受領域專家的信息到與應用之間的操練。很多時候,開發團隊之間的溝通問題不僅僅是因為誤解了該領域的語言,還因為該領域的語言本身是模棱兩可的。領域驅動的設計過程不僅要實現所使用的語言的目標,而且還改進和完善領域的語言。這反過來又有益於正在建設的軟件,因為該模型是一個領域語言直接投影。

為了讓模型保持語言的純粹的和可用,你必須在域模型中實現大量的隔離和封裝。因此,基於域驅動設計的系統可能會有相對較高的成本。但領域驅動設計提供了許多技術上的好處,如可維護性,它應該只適用於復雜的領域,其模型和語言處理在復雜的信息溝通上以及領域共同理解的闡述上有明顯的好處。

下邊是領域驅動設計風格的好處:

  • 溝通. 開發團隊中的所有各方都可以使用域模型及其定義的實體,使用通用業務領域語言來傳播業務知識和需求,而不需要技術術語。
  • 可擴展. 領域模型通常是模塊化的和靈活的,它很容易隨著條件和需求的變化而更新和擴展。
  • 可測試. 領域模型對象是低散耦合和高內聚的,這讓它們更容易測試。

假如你有一個復雜的領域,你想改善開發團隊間的溝通和理解,或者你必須使用一個所有幹系人都能懂的通用的語言來表達應用程序的設計,那就考慮 DDD。如果你有龐大且復雜的企業數據,難以用其它技術進行管理, DDD 也是個理想的方法。

對於領域驅動設計技術的總結,請參見“領域驅動設計”。http://www.infoq.com/minibooks/domain-driven-design-quickly. 另外, 參見 Eric Evans寫的"Domain-Driven Design: Tackling Complexity in the Heart of Software" (Addison-Wesley, ISBN: 0-321-12521-5) 和Jimmy Nilsson寫的"Applying Domain-Driven Design and Patterns" (Addison-Wesley, ISBN: 0-321-26820-2).

領域驅動設計架構風格