DDD-基礎知識 領域模型:失血、貧血、充血 失血模型:基於資料庫的領域設計方式其實就是典型的失血模型; 一般開發的時候,都是根據資料庫和表一一對應的設計。
在上述標中,如果存在同時修改兩個 表,那麼一般會使用manager去控制。
貧血:人在查詢地址的時候,在上述失血模式中,肯定會去調研addressDao.find(),在貧血中就不會了,貧血中在一個類Person中給另外一個類Address賦值。
充血:在上述貧血模式中,一個類操作了資料庫,這樣很不好。充血模式中使用了依賴注入。
一 實體 什麼是實體:有業務生命週期,使用標識進行跟蹤。
比如人是一個實體,人從出生到死亡,都在不斷的變化中,人有自己的生命週期。但是每個人都是不一樣的,每個人都是唯一的,這個唯一可以用身份證號碼去區分,每個人的身份證號都是不一樣的。 實體:1 應該有生命週期 2 具有唯一的標識
2 值物件 1.不可變的 2.將不同的相關屬性組合成了一個概念整體 3.當度量和描述改變時,可以用另外一個值物件予以替換 4.可以和其他值物件進行相等性比較 5.不會對協作物件造成副作用
值物件是不可變的,比如人有家,家的地址A是不會變化的。 當然有人說搬家了怎麼辦呢,搬家了就換一個地址B,但是他以前的家A還是在原來的A這個地址。
img-blog.csdn.net/20181024171…
比較流行使用ORM持久化機制,使用ORM將每個類對映到一張資料庫表, 再將每個屬性對映到資料庫表中的列會增加程式的複雜性3 聚合 聚合是領域物件的顯式分組,旨在支援領域模型的行為和不變性,同時充當一致性和事務性邊界。
基於業務用例而非現實生活建立必要的關聯 減少不必要的關聯 將雙向的關聯轉換為單向關聯