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


1.引言

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

在DDD中,聚合也可以用來表示整體與部分的關(guān)系,但不再強(qiáng)調(diào)部分與整體的獨立性。聚合是將相關(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ū)ο螅▽嶓w和值對像)組成,聚合正是應(yīng)用在領(lǐng)域?qū)ο笾稀H绻_應(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)域中的實體和值對象,而忽略領(lǐng)域?qū)ο笾g的關(guān)聯(lián)關(guān)系,以至于我們會基于現(xiàn)實業(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)系,加大了實現(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. 基于

    網(wǎng)友評論