DDD落地過(guò)程中關(guān)于值對(duì)象建模的思考

前言

值對(duì)象是狀態(tài)不可變的、可整體替換的矩屁、用于度量和描述領(lǐng)域中某件東西的對(duì)象。在落地DDD過(guò)程中我們常常遇到一個(gè)概念到底是建模成實(shí)體好還是建模成值對(duì)象好這種問(wèn)題,其實(shí)各DDD大神早已經(jīng)給出了答案捷雕,prefer value object to entity!

值對(duì)象建模

0壹甥、值對(duì)象不包含改變屬性的方法

  • 值對(duì)象里沒(méi)有改變自身狀態(tài)的方法救巷,只有查詢方法,根據(jù)迪米特法則和告訴而非詢問(wèn)原則決定查詢方法是public還是protected
  • 想要改變值對(duì)象狀態(tài)句柠,就新建一個(gè)值對(duì)象過(guò)來(lái)替換

1浦译、值對(duì)象要包含領(lǐng)域邏輯

  • 值對(duì)象雖然是不可變的棒假,但是值對(duì)象本身可以利用自己的屬性去完成一些領(lǐng)域邏輯,而且建議把領(lǐng)域邏輯寫到值對(duì)象里精盅。
  • 實(shí)體盡量作為值對(duì)象的對(duì)外接口

2帽哑、迪米特法則

  • 迪米特法則要求一個(gè)對(duì)象對(duì)另一個(gè)對(duì)象內(nèi)部結(jié)構(gòu)知道的越少越好,在代碼體現(xiàn)上就是一個(gè)聚合根實(shí)體內(nèi)部的值對(duì)象的屬性和方法盡量都是protected以上級(jí)別的渤弛,這樣包外部就沒(méi)辦法訪問(wèn)到實(shí)體內(nèi)部的值對(duì)象祝拯,只有實(shí)體可以調(diào)用值對(duì)象的方法,值對(duì)象想要對(duì)外提供服務(wù)必須通過(guò)聚合根實(shí)體的代理她肯。這種實(shí)現(xiàn)是符合高內(nèi)聚低耦合原則的佳头!但是需要在聚合根實(shí)體中實(shí)現(xiàn)大量的代理代碼。

3晴氨、告訴而非詢問(wèn)原則

  • 告訴而非詢問(wèn)原則在迪米特法則基礎(chǔ)上有放寬值對(duì)象的訪問(wèn)級(jí)別康嘉。即值對(duì)象可以對(duì)外提供用于查詢的public方法,而對(duì)對(duì)象(此處指聚合跟實(shí)體中引用的其他實(shí)體對(duì)象籽前,非值對(duì)象)狀態(tài)有修改的方法則被修飾為protected亭珍。有時(shí)我們需要值對(duì)象返回一個(gè)collection類型的屬性,這個(gè)原則要求我們暴露的是不可改變的屬性枝哄,比如Collections.unmodifyed(map)肄梨,或者利用新建一個(gè)副本對(duì)象的方式提供返回。

在落地實(shí)踐中挠锥,以上兩個(gè)原則都是可以落地的众羡,區(qū)別在于聚合根實(shí)體是否直接代理值對(duì)象的方法,這也決定了聚合根實(shí)體中代理方法代碼量的多少蓖租。在落地過(guò)程中可以根據(jù)自己的實(shí)際需要進(jìn)行選擇粱侣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蓖宦,隨后出現(xiàn)的幾起案子齐婴,更是在濱河造成了極大的恐慌,老刑警劉巖稠茂,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柠偶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡睬关,警方通過(guò)查閱死者的電腦和手機(jī)嚣州,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)共螺,“玉大人该肴,你說(shuō)我怎么就攤上這事∶瓴唬” “怎么了匀哄?”我有些...
    開(kāi)封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵秦效,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涎嚼,道長(zhǎng)阱州,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任法梯,我火速辦了婚禮苔货,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘立哑。我一直安慰自己夜惭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布铛绰。 她就那樣靜靜地躺著诈茧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捂掰。 梳的紋絲不亂的頭發(fā)上敢会,一...
    開(kāi)封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音这嚣,去河邊找鬼鸥昏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姐帚,可吹牛的內(nèi)容都是我干的互广。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼卧土,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了像樊?” 一聲冷哼從身側(cè)響起尤莺,我...
    開(kāi)封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎生棍,沒(méi)想到半個(gè)月后颤霎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涂滴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年友酱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柔纵。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缔杉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搁料,到底是詐尸還是另有隱情或详,我是刑警寧澤系羞,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站霸琴,受9級(jí)特大地震影響椒振,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梧乘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一澎迎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧选调,春花似錦夹供、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至枝笨,卻和暖如春袁铐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背横浑。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工剔桨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徙融。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓洒缀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欺冀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子树绩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容