領域驅動模型(DDD)總結

領域驅動模型總結

1. DDD整體結構分爲四層:

  • Infrastructure(基礎實施層)
  • Domain(領域層)
  • Application(應用層)
  • Interfaces(表示層,也叫用戶界面層或是接口層),各個層面的做用下面介紹。

2. DDD: application 應用層

  • 相對於領域層,應用層是很薄的一層,應用層定義了軟件要完成的任務,要儘可能簡單.
  • 它不包含任務業務規則或知識, 爲下一層的領域對象協助任務、委託工做。
  • 它沒有反映業務狀況的狀態,但它能夠具備反映用戶或程序的某個任務的進展狀態。
  • 對外爲展示層提供各類應用功能(service)。
  • 對內調用領域層(領域對象或領域服務)完成各類業務邏輯任務(task)。
  • 這一層也很適合寫一些任務處理,日誌監控

3. DDD: domain 領域層

領域層主要負責表達業務概念,業務狀態信息和業務規則。 Domain層是整個系統的核心層,幾乎所有的業務邏輯會在該層實現。git

領域模型層主要包含如下的內容:github

  • 實體(Entities):具備惟一標識的對象
  • 值對象(Value Objects): 無需惟一標識的對象
  • 領域服務(Domain Services): 一些行爲沒法歸類到實體對象或值對象上,本質是一些操做,而非事物
  • 聚合/聚合根(Aggregates,Aggregate Roots): 聚合是指一組具備內聚關係的相關對象的集合,每一個聚合都有一個root和boundary
  • 工廠(Factories): 建立複雜對象,隱藏建立細節
  • 倉儲(Repository): 提供查找和持久化對象的方法

4. DDD: infrastructure 基礎實施層

最底層(但與全部層進行交互) 向其餘層提供 通用的 技術能力(好比工具類,第三方庫類支持,經常使用基本配置,數據訪問底層實現)面試

基礎實施層主要包含如下的內容:算法

  • 爲應用層 傳遞消息(好比通知)
  • 爲領域層 提供持久化機制(最底層的實現)
  • 爲用戶界面層 提供組件配置
  • 基礎設施層還可以經過架構框架來支持四個層次間的交互模式。

5. DDD: interfaces 用戶界面層(或表示層)

最頂層 請求應用層以獲取用戶所須要展示的數據(好比獲取首頁的商品數據) 發送命令給應用層要求其執行某個用戶命令(實現某個業務邏輯,好比用戶要進行轉帳)編程

用戶界面層應該包含如下的內容:微信

  • 數據傳輸對象(Data Transfer Object): DTO也常被稱做值對象,VO,實質上與領域層的VO並不相同
  • DTO是數據傳輸的載體,內部不該該存在任何業務邏輯,經過DTO把內部的領域對象與外界隔離。
  • 裝配(Assembler): 實現DTO與領域對象之間的相互轉換,數據交換,所以Assembler幾乎老是同DTO一塊兒出現。
  • 表面,門面(Facade): Façade的用意在於爲遠程客戶端提供粗粒度的調用接口
  • 它的主要工做就是將一個用戶請求委派給一個或多個Service進行處理,也就是咱們常說的Controller。

文末

歡迎關注我的微信公衆號:Coder編程 歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~ 也分享一些雜文~數據結構

文章收錄至 Github: github.com/CoderMerlin… Gitee: gitee.com/573059382/c… 歡迎關注並star~ 架構

微信公衆號
dd
相關文章
相關標籤/搜索