DDD之3實體和值對象_貨運

2{icon} {views}

※評比南投搬家公司費用收費行情懶人包大公開

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

圖中是一個別墅的模型,代表實體,可以真實的看得到。那麼在DDD設計方法論中,實體和值對象是什麼呢?

背景

實體和值對象是領域模型中的領域對象,是組成領域模型的基礎單元,一起實現實體最基本的核心領域邏輯。

那麼問題來了:

1, 他兩在領域模型中的作用是什麼?

2,在系統中跟代碼模型和數據模型是怎麼對應的?

搞清楚這兩個問題很重要。回答問題是需要有知識基礎的,先來捋清楚這兩個概念的定義和內涵。然後在小結部分我們來回答這兩個問題。

實體

定義: DDD中的一類對象,擁有唯一標識符,經歷各種狀態變更后仍然可以保持一致,對這類對象而言,重要的是延續性和標識,(對象的延續性和標識可以超出軟件的生命周期)而非屬性。

形態:不同的設計過程中,形態不一致。

值對象

定義:通過對象的屬性值來識別的對象是值對象,它將多個相關屬性組合為一個概念整體。它是沒有標識符的對象;
**

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

**
**

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

※智慧手機時代的來臨,RWD網頁設計為架站首選

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

例子:人員地址案例;

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

實體PK值對象

DDD提倡從領域模型設計出發,而不是先設計數據模型;

小結

首先明確了實體和值對象的概念,以及在不同的設計階段的形態。然後通過一個例子展示了實體和值對象的概念和使用;

這是一個從業務模型向系統模型落地過程,考驗的是設計能力,我們應該結合自己的業務場景,選擇合適的方法進行微服務設計。

最後我來回答一下在背景部分拋出的兩個問題?

1, 實體和值對象在領域模型中的作用是什麼?

2,在系統中跟代碼模型和數據模型是怎麼對應的?

經過上面的分析,我的回答如下:

希望大家都理解好DDD的實體和值對象,設計出高度靈活的代碼;

原創不易,關注誠可貴,轉發價更高!轉載請註明出處,讓我們互通有無,共同進步,歡迎溝通交流。
我會持續分享Java軟件編程知識和程序員發展職業之路,歡迎關注,我整理了這些年編程學習的各種資源,關注公眾號‘李福春持續輸出’,發送’學習資料’分享給你!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※回頭車貨運收費標準

宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念