領域驅動設計 業務建模與架構實務

王紅亮

  • 出版商: 機械工業
  • 出版日期: 2023-11-16
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • 頁數: 372
  • 裝訂: 平裝
  • ISBN: 7111737547
  • ISBN-13: 9787111737544
  • 相關分類: Domain-Driven Design
  • 立即出貨

買這商品的人也買了...

商品描述

內容簡介這是一本從業務和架構視角講解DDD的基本原則、底層邏輯、落地難點、落地方法和進階技巧的實戰性著作。 
DDD的理論體系複雜,學習和實踐門檻較高,已有的關於DDD的著作或多或少存在理論描述難以理解、
案例示範難落地等問題,阻礙了DDD在實踐中的應用。
本書作者有20餘年的軟體研發經驗,對DDD有深刻的理解,深諳DDD實踐過程中的痛點,
他在這本書中高屋建瓴、化繁為簡,讓讀者有撥雲見霧之感。
理論部分(第1~3章)從軟體工程的基本思想出發,首先分析了DDD產生的原因,並由此推論出DDD的基本原則,
這些內容是學習本書的基礎;緊接著分析了DDD落地的困難點,幫助讀者掃清障礙;
然後提煉出了DDD的成熟度模型,包括DDD的戰略、戰術和衡量指標。
這些內容極具針對性和獨創性,是研發團隊必須掌握的,也是目前同類書中很少講的。
實戰部分(第4~10章)從業務建模和架構的角度切入,首先用搭積木的方式講解和演示了DDD項目由簡易到復雜的落地過程,
包含大量的業務建模場景和案例,涉及如何應用通用語言、如何建模領域邏輯、
如何應用上下文和子域切分系統以及如何保持語言、模型、程式碼的一致性等重要內容;
然後講解如何將各種設計模式應用到DDD中,以及如何設計出能讓DDD更好落地的系統架構。
這些內容兼具實操性和思想性,充滿經驗和智慧,在同類書中同樣也不多見。
 

目錄大綱

目錄 Contents 
前言
第1章 DDD的基本原則與價值分析1
1.1 DDD的初心1
1.1.1 軟體專案成敗的關鍵1
1.1.2 兩個亟須驗證的事實3
1.2 DDD的基本原則6
1.2.1 DDD的兩個基本原則7
1.2.2 原則的底層邏輯10
1.3 DDD的價值分析12
1.3.1 複雜度控制12
1.3.2 架構原則16
1.3.3 團隊協作20
1.4 關於DDD原則的案例23
第2章 DDD落地困難分析35
2.1 DDD的適用範圍35
2.1.1 領域特性36
2.1.2 團隊成熟度38
2.1.3 適用性評分錶39
2.2 5個常見迷思39
2.3 文化的變革44
2.3.1 領域專家的邊界44
2.3.2 設計師的鐵鎚46
2.3.3 開發人員的輪子47
2.4 團隊的挑戰48
2.4.1 管理者的責任48
2.4.2 開發團隊的意識與技能50
2.4.3 角色重新定位51
2.5 測試、流程與架構的佳搭檔52
2.5.1 測試的佳搭檔:TDD和單元測試52
2.5.2 過程的佳搭檔:敏捷流程與DevOps54
2.5.3 架構的佳搭檔:六角形、洋蔥與分層架構56
第3章 DDD成熟度模型59
3.1 成熟度模型的目的及特殊性59
3.2 5個度量維度60
3.3 3級成熟度模型63
第4章 模型的要素—用例、視圖與建構塊68
4.1 模型的建構步驟68
4.2 模型的場景:用例69
4.2.1 用例的定義69
4.2.2 用例的目的70
4.2.3 發現用例72
4.2.4 用例的編寫73
4.3 模型的資料:類別圖76
4.3.1 屬性77
4.3.2 方法78
4.3.3 註釋、約束與關鍵字79
4.3.4 依賴與限定關聯80
4.3.5 聚合與組合82
4.4 模型的行為:交互圖83
4.4.1 時序圖84
4.4.2 協作圖89
4.4.3 交互圖與類別圖的關係91
4.5 模型的變化:操作契約92
4.5.1 作用93
4.5.2 後置條件94
4.5.3 準則94
4.6 模型的建構塊:實體、值物件、領域服務95
4.6.1 實體95
4.6.2 值物件99
4.6.3 實體與值物件的比較103
4.6.4 領域服務105
第5章 從語言到模型—基礎模型建構108
5.1 設計目標108
5.2 設計之前的準備工作110
5.2.1 語言110
5.2.2 角色111
5.2.3 溝通111
5.2.4 方法113
5.2.5 工具113
5.2.6 時間115
5.3 領域模型的建構115
5.3.1 發掘領域概念116
5.3.2 創建關聯118
5.3.3 定義屬性123
5.3.4 分配職責125
5.3.5 觸發事件128
5.3.6 處理異常134
5.4 典型的領域邏輯建模137
5.4.1 規則與約束137
5.4.2 流程與分支140
5.4.3 驗證與篩選142
5.4.4 演算法與計算144
5.4.5 時間與空間146
5.4.6 有狀態與無狀態149
5.4.7 同步與非同步150
5.5 典型案例151
5.5.1 案例1:線上購物網站152
5.5.2 案例2:汽車租賃系統153
5.5.3 案例3:銀行體系154
第6章 精煉模型—深入模型設計156
6.1 模型引力場:聚合156
6.1.1 聚合的定義及作用157
6.1.2 聚合規則158
6.1.3 聚合設計法則158
6.1.4 實作方法161
6.2 模型組裝線:工廠163
6.2.1 為什麼需要工廠163
6.2.2 廠址選擇169
6.3 模型貨架:儲存庫171
6.3.1 為什麼需要儲存庫171
6.3.2 儲存庫介面175
6.3.3 儲存庫與工廠的區別176
6.3.4 儲存庫與資料存取對象的差異177
6.3.5 儲存庫實作的注意事項177
6.4 富二代的煩惱:基底類別與繼承178
6.4.1 抽象、泛化與DDD178
6.4.2 通用語言與基底類別179
6.4.3 為多態去繼承181
6.4.4 合格的子類別、自然的繼承關係:Liskov原則182
6.4.5 抽象類別與介面的選擇183
6.5 模型品質:優良的開發組件 184
6.5.1 精心設計領域模型的特徵184
6.5.2 模型設計的基本原則186
6.5.3 為擴展性設計188
第7章 分而治之—上下文、模組與子域191
7.1 分離用例、模型與團隊:上下文191
7.1.1 什麼是上下文191
7.1.2 為什麼需要上下文193
7.1.3 上下文的辨識方法195
7.1.4 辨識上下文的步驟199
7.1.5 同一上下文工作法200
7.1.6 跨情境團隊工作法202
7.2 重用性與穩定性:模組207
7.2.1 包的內聚性原則207
7.2.2 包的耦合原則209
7.3 區別特殊性與一般性:子域211
7.3.1 核心競爭力:核心域211
7.3.2 週邊業務:支撐域215
7.3.3 通用能力:通用域215
7.4 上下文、模組和子域之間的關係216
7.4.1 上下文和子域的關係216
7.4.2 上下文和模組的關係216
7.4.3 子域和模組的關係217
第8章 關鍵細部—從模型到程式碼218
8.1 DDD 中的程式碼要求