消息場景:用戶 A 發送一個消息給用戶 B,用戶 B 回復一個消息給用戶 A。。。 現有設計:消息設計為實體並為聚合根,發件人、收件人設計為值對象。 三個問題: 實體最重要的特性是什么? Message 實體是怎么得來的? 發件人、收件人為什么不是實體? 1. 實體最重 ...
上一篇:DDD 領域驅動設計 三個問題思考實體和值對象 說實話,整理現在這一篇博文的想法,在上一篇發布出來的時候就有了,但到現在才動起筆來,而且寫之前又反復讀了上一篇博文的內容及評論,然后去收集資料,真正去寫的時候,才發現這類的博文真不是一般的難寫,一句話要反復揣摩,並進行理解,最重要的是半天才蹦出一句話。 看了上面的文字,你可能會覺得我是為了寫博文而寫博文,其實並不是如此,我現在覺得寫這類博文的 ...
2014-11-10 15:53 20 2905 推薦指數:
消息場景:用戶 A 發送一個消息給用戶 B,用戶 B 回復一個消息給用戶 A。。。 現有設計:消息設計為實體並為聚合根,發件人、收件人設計為值對象。 三個問題: 實體最重要的特性是什么? Message 實體是怎么得來的? 發件人、收件人為什么不是實體? 1. 實體最重 ...
領域驅動設計DDD在戰術建模上提供了一個元模型體系(如下圖): DDD構建的元模型元素腦圖 元模型往往用來在某一特定的領域定義一個基礎的通用 ...
關於具體需求,請看前面的博文:DDD領域驅動設計實踐篇之如何提取模型,下面是具體的實體、聚合、值對象的代碼,不想多說什么是實體、聚合等概念,相信理論的東西大家已經知曉了。本人對DDD表示好奇,沒有在真正項目實踐過,甚至也沒有看過真正的DDD實踐的項目源碼,處於極度糾結狀態,甚至無法自拔,所以告誡 ...
其他博文: DDD 領域驅動設計-三個問題思考實體和值對象 DDD 領域驅動設計-三個問題思考實體和值對象(續) 以下內容屬於博主“臆想”,如有不當,請別當真。 扯淡開始: 諾蘭的最新電影《星際穿越》,最近非常的火熱,每個人看完之后都會有不一樣的感受,黑洞、蟲洞、時間旅行 ...
1 前置閱讀 在閱讀本文章之前,你可以先閱讀: 什么是DDD 2 實現值對象 值對象有兩個主要特征:它們沒有任何標識。它們是不可變的。 我們舉個例子:小明是“浙江寧波”人,小紅也是“浙江寧波”人,小王是“浙江杭州”人,在這個例子中,我們把地址可以獨立出一個值對象出來,我們會遇到 ...
建立領域模型的第一步就是需要識別出實體、值對象與領域服務。 一.實體 1.實體是領域中需要唯一標識的領域概念。通常在業務中,需要唯一標識與區分的對象並需要持續對它進行跟蹤,這樣的對象我們認為是實體。這里的唯一標識通常指的是業務上的唯一標識,比如訂單號、雇員工號等信息,而不是數據庫中因為技術需要 ...
為什么需要倉儲呢?領域對象(一般是聚合根)的被創建出來后的到最后持久化到數據庫都需要跟數據庫打交道,這樣我們就需要一個類似數據庫訪問層的東西來管理領域對象。那是不是我們就可以設計一個類似DAL層的東東來管理對象呢?是的,但是呢設計上有點區別,就是我們不希望上層如應用層直接訪問數據,我們所有的操作 ...
關於DDD的理論知識總結,可參考這篇文章。 DDD社區官網上一篇關於聚合設計的幾個原則的簡單討論: 文章地址:http://dddcommunity.org/library/vernon_2011/,該地址中包含了一篇關於介紹如何有效的設計聚合的一些原則,共3個pdf文件。該文章中指出了以下 ...