詳解領域驅動設計和spring
領域驅動設計
Eric Evans的《領域驅動設計》無疑是軟件設計領域最重要的幾本書之一。
這本書主要集中在軟件開發中如何處理領域和軟件的映射關系— 開始強調領域通用語言(domain ubiquitous language),通過語言來提取模型,最終映射到一個可工作的軟件上。
我們已經對軟件設計模式比較熟悉了,他是用于描述和提煉Class和Class關系的技術語言。而DDD是一種用于程序員和業務溝通的更通用的語言,使用DDD可以最終將代碼映射到模型上。
基礎構建
構件是DDD中的一些專有名詞,讓我們看一下圖
1限界上下文(Bounded Context)
當進行領域建模的時候,任何將其作為一個整體進行建模的嘗試注定會失敗。因為各類利益相關者和他們對領域的看法可能完全不同,試圖建立一個單一的、獨特的模型來滿足所有需求是完全不可能的,會把系統搞得極為復雜。
讓我們看一個示例圖,這個圖描述了銷售領域已經識別出的模型
我們把模型元素稍加區分,成為分離的模型,就可以看出客戶和訂單的,他們是不同上下文的核心的概念。
在這里,我們確定了系統戰略層面的核心部分,這些部分可能都涉及客戶或訂單的概念,但通常不同限界上下文對它們的屬性感興趣的部分并不相同。比如 Accounting上下文通常對客戶的計費信息和不同的支付選項感興趣,而Shipping上下文的對客戶的唯一目標是運送地址,然后跟蹤訂單。 Order上下文可能通過客戶的訂單項了解商品信息,但實際上只涉及商品類目基本的內容(譯者注:商品規格、商品詳情這些信息Order上下文并不關注)。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%