DDD理論學(xué)習(xí)系列——案例及目錄


1.引言

聚合,最初是UML類圖中的概念,表示一種強(qiáng)的關(guān)聯(lián)關(guān)系,是一種整體與部分的關(guān)系,且部分能夠離開整體而獨(dú)立存在,如車和輪胎。

在DDD中,聚合也可以用來表示整體與部分的關(guān)系,但不再強(qiáng)調(diào)部分與整體的獨(dú)立性。聚合是將相關(guān)聯(lián)的領(lǐng)域?qū)ο筮M(jìn)行顯示分組,來表達(dá)整體的概念(也可以是單一的領(lǐng)域?qū)ο螅1热鐚⒈硎居唵闻c訂單項的領(lǐng)域?qū)ο筮M(jìn)行組合,來表達(dá)領(lǐng)域中訂單這個整體概念。

我們知道,領(lǐng)域模型是由一系列反映問題域概念的領(lǐng)域?qū)ο螅▽?shí)體和值對像)組成,聚合正是應(yīng)用在領(lǐng)域?qū)ο笾?。如果要正確應(yīng)用聚合,我們首先得理清領(lǐng)域?qū)ο箝g的關(guān)聯(lián)關(guān)系。

2. 梳理關(guān)聯(lián)關(guān)系

在設(shè)計領(lǐng)域模型的初期,我們習(xí)慣專注于領(lǐng)域中的實(shí)體和值對象,而忽略領(lǐng)域?qū)ο笾g的關(guān)聯(lián)關(guān)系,以至于我們會基于現(xiàn)實(shí)業(yè)務(wù)場景或數(shù)據(jù)模型來建立關(guān)聯(lián)關(guān)系。這樣就會引入大量不必要的關(guān)聯(lián),比如下圖:

然而圖中的關(guān)聯(lián)關(guān)系都是必要的嗎?我想未必。這樣的關(guān)聯(lián)關(guān)系,加大了實(shí)現(xiàn)領(lǐng)域模型的技術(shù)難度。

當(dāng)我們建立對象的關(guān)聯(lián)關(guān)系時,思考以下問題:

  1. 這個關(guān)聯(lián)關(guān)系的作用時什么?

  2. 誰需要這個關(guān)聯(lián)關(guān)系去發(fā)揮作用?

而如何簡化關(guān)聯(lián)呢?

  1. 基于

    延伸閱讀

    學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式