
圖中是一個別墅的模型,代表物體,可以真實的看得到,那么在DDD設計方法論中,物體和值物件是什么呢?
背景
物體和值物件是領域模型中的領域物件,是組成領域模型的基礎單元,一起實作物體最基本的核心領域邏輯,
那么問題來了:
1, 他兩在領域模型中的作用是什么?
2,在系統中跟代碼模型和資料模型是怎么對應的?
搞清楚這兩個問題很重要,回答問題是需要有知識基礎的,先來捋清楚這兩個概念的定義和內涵,然后在小結部分我們來回答這兩個問題,
物體
定義: DDD中的一類物件,擁有唯一識別符號,經歷各種狀態變更后仍然可以保持一致,對這類物件而言,重要的是延續性和標識,(物件的延續性和標識可以超出軟體的生命周期)而非屬性,
形態:不同的設計程序中,形態不一致,

值物件
定義:通過物件的屬性值來識別的物件是值物件,它將多個相關屬性組合為一個概念整體,它是沒有識別符號的物件;
**
特點:值物件描述了領域中的一件東西,這個東西是不可變的,它將不同的相關屬性組合成了一個概念整體,當度量和描述改變的時候,它可以用另外一個值物件替換,并進行相等性比較而不會帶來副作用;
**
**
簡單來說: 值物件本質就是一個集合;
**
意義:領域建模程序中,值物件可以保證屬性歸類的清晰和概念的完整性;
**

**
**
上圖中: 如果把省市區地址放在人員物體中,會顯得屬性很多很零碎, 推薦的做法是把省市區地址構成一個集合,即地址值物件;


例子:人員地址案例;

缺點:如果物體參考的值物件過多,會導致物體堆積一批缺乏概念完整性的屬性,值物件失去了業務含義,操作起來不方便;
物體PK值物件

DDD提倡從領域模型設計出發,而不是先設計資料模型;
小結
首先明確了物體和值物件的概念,以及在不同的設計階段的形態,然后通過一個例子展示了物體和值物件的概念和使用;
這是一個從業務模型向系統模型落地程序,考驗的是設計能力,我們應該結合自己的業務場景,選擇合適的方法進行微服務設計,
最后我來回答一下在背景部分拋出的兩個問題?
1, 物體和值物件在領域模型中的作用是什么?
2,在系統中跟代碼模型和資料模型是怎么對應的?
經過上面的分析,我的回答如下:

希望大家都理解好DDD的物體和值物件,設計出高度靈活的代碼;
原創不易,關注誠可貴,轉發價更高!轉載請注明出處,讓我們互通有無,共同進步,歡迎溝通交流,
我會持續分享Java軟體編程知識和程式員發展職業之路,歡迎關注,我整理了這些年編程學習的各種資源,關注公眾號‘李福春持續輸出’,發送'學習資料'分享給你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227058.html
標籤:Java
下一篇:淺析php環境配置

