領域驅動設計 : 軟件核心複雜性應對之道

領域驅動設計 : 軟件核心複雜性應對之道

作者: 埃里克·埃文斯 (Eric Evans)
出版社: 人民郵電
出版在: 2016-06-01
ISBN-13: 9787115376756
ISBN-10: 7549956634
裝訂格式: 平裝
總頁數: 370 頁





內容描述


<內容介紹>
本書是領域驅動設計方面的經典之作,修訂版更是對之前出版的中文版進行了全面的修訂和完善。
全書圍繞著設計和開發實踐,結合若乾真實的項目案例,向讀者闡述如何在真實的軟件開發中應用領域驅動設計。書中給出了領域驅動設計的系統化方法,並將人們普遍接受的一些實踐綜合到一起,融入了作者的見解和經驗,展現了一些可擴展的設計新實踐、已驗證過的技術以及便於應對複雜領域的軟件項目開發的基本原則。

<章節目錄>
第一部分運用領域模型
第1章消化知識5
1.1有效建模的要素9
1.2知識消化10
1.3持續學習11
1.4知識豐富的設計12
1.5深層模型15
第2章交流與語言的使用16
2.1模式:UBIQUITOUS LANGUAGE16
2.2“大聲地”建模21
2.3一個團隊,一種語言22
2.4文檔和圖24
2.4.1書面設計文檔25
2.4.2完全依賴可執行代碼的情況27
2.5解釋性模型27
第3章綁定模型和實現29
3.1模式:MODEL—DRIVEN DESIGN30
3.2建模範式和工具支持32
3.3揭示主旨:為什麼模型對用戶至關重要38
3.4模式:HANDS—ON MODELER39
第二部分模型驅動設計的構造塊
第4章分離領域43
4.1模式:LAYERED ARCHITECTURE43
4.1.1將各層關聯起來46
4.1.2架構框架47
4.2領域層是模型的精髓48
4.3模式:THE SMART UI“反模式”48
4.4其他分離方式50
第5章軟件中所表示的模型51
5.1關聯52
5.2模式:ENTITY(又稱為REFERENCE OBJECT)56
5.2.1ENTITY建模59
5.2.2設計標識操作60
5.3模式:VALUE OBJECT62
5.3.1設計VALUE OBJECT64
5.3.2設計包含VALUE OBJECT的關聯67
5.4模式:SERVICE67
5.4.1SERVICE與孤立的領域層69
5.4.2粒度70
5.4.3對SERVICE的訪問70
5.5模式:MODULE(也稱為PACKAGE)71
5.5.1敏捷的MODULE72
5.5. 2通過基礎設施打包時存在的隱患73
5.6建模範式75
5.6.1對象範式流行的原因76
5.6.2對象世界中的非對象77
5.6.3在混合範式中堅持使用MODEL—DRIVEN DESIGN78
第6章領域對象的生命週期80
6.1模式:AGGREGATE81
6.2模式:FACTORY89
6.2.1選擇FACTORY及其應用位置91
6.2.2有些情況 ​​下只需使用構造函數93
6.2.3接口的設計94
6.2.4固定規則的相關邏輯應放置在哪裡94
6.2.5ENTITY FACTORY與VALUEOBJECT FACTORY95
6.2.6重建已存儲的對象95
6.3模式:REPOSITORY97
6.3.1REPOSITORY的查詢101
6.3.2客戶代碼可以忽略REPOSITORY的實現,但開發人員不能忽略102
6.3 .3REPOSITORY的實現103
6.3.4在框架內工作104
6.3.5REPOSITORY與FACTORY的關係104
6.4為關係數據庫設計對象106
第7章使用語言:一個擴展的示例108
7.1貨物運輸系統簡介108
7.2隔離領域:引入應用層110
7.3將ENTITY和VALUE OBJECT區別開110
7.4設計運輸領域中的關聯112
7.5AGGREGATE邊界113
7.6選擇REPOSITORY113
7.7場景走查115
7.7.1應用程序特性舉例:更改Cargo的目的地115
7.7.2應用程序特性舉例:重複業務116
7.8對象的創建116
7.8.1Cargo的FACTORY和構造函數116
7.8.2添加Handling Event117
7.9停一下,重構:Cargo AGGREGATE的另一種設計118
7.10運輸模型中的MODULE120
7.11引入新特性:配額檢查122
7.11.1連接兩個系統123
7.11.2進一步完善模型:劃分業務124
7.11.3性能優化125
7.12小結126
第三部分通過重構來加深理解
第8章突破131
8.1一個關於突破的故事131
8.1.1華而不實的模型132
8.1.2突破133
8.1.3更深層模型135
8.1.4冷靜決策137
8.1.5成果138
8.2機遇138
8.3關註根本138
8.4後記:越來越多的新理解139
第9章將隱式概念轉變為顯式概念140
9.1概念挖掘140
9.1.1傾聽語言140
9.1.2檢查不足之處144
9.1.3思考矛盾之處148
9.1.4查閱書籍148
9.1.5嘗試,再嘗試150
9.2如何為那些不太明顯的概念建模150
9.2.1顯式的約束151
9.2.2將過程建模為領域對象153
9.2.3模式:SPECIFICATION154
9.2.4SPECIFICATION的應用和實現156
第10章柔性設計168
10.1模式:INTENTION—REVEALING INTERFACES169
10.2模式:SIDE—EFFECT—FREE FUNCTION173
10.3模式:ASSERTION177
10.4模式:CONCEPTUAL CONTOUR181
10.5模式:STANDALONE CLASS184
10.6模式:CLOSURE OF OPERATION186
10.7聲明式設計188
10.8聲明式設計風格190
10.9切入問題的角度197
10.9.1分割子領域197
10.9.2盡可能利用已有的形式198
第11章應用分析模式206
第12章將設計模式應用於模型217
12.1模式:STRATEGY(也稱為POLICY)218
12.2模式:COMPOSITE221
12.3為什麼沒有介紹FLYWEIGHT226
第13章通過重構得到更深層的理解227
13.1開始重構227
13.2探索團隊227
13.3借鑒先前的經驗228
13.4針對開發人員的設計229
13.5重構的時機229
13.6危機就是機遇230
第四部分戰略設計
第14章保持模型的完整性233
14.1模式:BOUNDED CONTEXT235
14.2模式:CONTINUOUS INTEGRATION239
14.3模式:CONTEXT MAP241
14.3.1測試CONTEXT的邊界247
14.3.2CONTEXT MAP的組織和文檔化247
14.4BOUNDED CONTEXT之間的關係248
14.5模式:SHARED KERNEL248
14.6模式:CUSTOMER/SUPPLIER DEVELOPMENT TEAM250
14.7模式:CONFORMIST253
14.8模式:ANTICORRUPTION LAYER255
14.8.1設計ANTICORRUPTION LAYER的接口256
14.8.2實現ANTICORRUPTION LAYER256
14.8.3一個關於防禦的故事259
14.9模式:SEPARATE WAY260
14.10模式:OPENHOST SERVICE261
14.11模式:PUBLISHED LANGUAGE262
14.12“大象”的統一264
14.13選擇你的模型上下文策略267
14.13.1團隊決策或更高層決策268
14.13.2置身上下文中268
14.13.3轉換邊界268
14.13.4接受那些我們無法更改的事物:描述外部系統269
14.13.5與外部系統的關係269
14.13.6設計中的系統270
14.13.7用不同模型滿足特殊需要270
14.13.8部署271
14.13.9權衡271
14.13.10當項目正在進行時272
14.14轉換272
14.14.1合併CONTEXT:SEPARATE WAY→SHARED KERNEL273
14.14.2合併CONTEXT:SHARED KERNEL→CONTINUOUS INTEGRATION274
14.14.3逐步淘汰遺留系統275
14.14.4OPEN HOST SERVICE→PUBLISHED LANGUAGE276
第15章精煉277
15.1模式:CORE DOMAIN278
15.1.1選擇核心280
15.1.2工作的分配280
15.2精煉的逐步提升281
15.3模式:GENERIC SUBDOMAIN282
15.3.1通用不等於可重用286
15.3.2項目風險管理287
15.4模式:DOMAIN VISION STATEMENT287
15.5模式:HIGHLIGHTED CORE289
15.5.1精煉文檔289
15.5.2標明CORE290
15.5.3把精煉文檔作為過程工具291
15.6模式:COHESIVE MECHANISM292
15.6.1GENERIC SUBDOMAIN與COHESIVE MECHANISM的比較293
15.6.2MECHANISM是COREDOMAIN一部分294
15.7通過精煉得到聲明式風格294
15.8模式:SEGREGATED CORE295
15.8.1創建SEGREGATED CORE的代價296
15.8.2不斷發展演變的團隊決策296
15.9模式:ABSTRACT CORE301
15.10深層模型精煉302
15.11選擇重構目標302
第16章大型結構303
16.1模式:EVOLVING ORDER306
16.2模式:SYSTEM METAPHOR308
16.3模式:RESPONSIBI LITYLAYER309
16.4模式:KNOWLEDGE LEVEL321
16.5模式:PLUGGABLE COMPONENT FRAMEWORK328
16.6結構應該有一種什麼樣的約束332
16.7通過重構得到更適當的結構333
16.7.1最小化333
16.7.2溝通和自律334
16.7.3通過重構得到柔性設計334
16.7.4通過精煉可以減輕負擔334
第17章領域驅動設計的綜合運用336
17.1把大型結構與BOUNDED CONTEXT結合起來使用336
17.2將大型結構與精煉結合起來使用339
17.3首先評估339
17.4由誰制定策略341
17.4.1從應用程序開發自動得出的結構341
17.4.2以客戶為中心的架構團隊341
17.5制定戰略設計決策的6個要點342
17.5.1技術框架同樣如此344
17.5.2註意總體規劃345
結束語
附錄351
術語表354
參考文獻357
圖片說明359
索引360




相關書籍

Python 設計模式

作者 羅偉富

2016-06-01

Scala Cookbook: Recipes for Object-Oriented and Functional Programming

作者 Alexander Alvin

2016-06-01

物件導向設計模式-可再利用物件導向軟體之要素 (精裝典藏版) (Design Patterns: Elements of Reusable Object-Oriented Software)

作者 Erich Gamma Richard Helm Ralph Johnson John Vlissides 葉秉哲 譯

2016-06-01