- 相關(guān)推薦
領(lǐng)域驅(qū)動設(shè)計之體會二
領(lǐng)域驅(qū)動設(shè)計之體會二2011-02-25 23:25領(lǐng)域驅(qū)動設(shè)計中分別用實體、值對象和服務(wù)來表示模型。其中所謂實體是具有唯一性的對象。在建模中,應(yīng)該盡早識別出實體。而值對象與實體恰恰相反,它不具有唯一性,其目的是為了減少建立實體的開銷。值對象為了描述領(lǐng)域的特殊方面,我們只關(guān)心它的屬性,而不關(guān)心其唯一性。有些領(lǐng)域中的動作,它們是一些動詞,看上去卻不屬于任何對象。通常這樣的行為是跨越多個對象的。我們將這樣的行為,顯示的聲明為服務(wù)。在領(lǐng)域中,不應(yīng)該為每一個需要的操作來建立一個服務(wù)。但是當(dāng)一個操作凸顯為一個領(lǐng)域中的重要概念時,就需要為它建立一個服務(wù)了。以下是服務(wù)的三個特征:1.服務(wù)執(zhí)行的操作涉及一個領(lǐng)域概念,這個領(lǐng)域概念通常不屬于一個實體或者值對象。
2.被執(zhí)行的操作涉及到領(lǐng)域中的其他對象。
3.操作是無狀態(tài)的。
需要注意的是,我們應(yīng)該嚴(yán)格區(qū)分領(lǐng)域?qū)拥姆⻊?wù)和基礎(chǔ)設(shè)施層的服務(wù)。設(shè)計時要確保領(lǐng)域?qū)颖3謴钠渌麑又懈綦x開來。
為了降低模型的復(fù)雜性,便于系統(tǒng)并行開發(fā),領(lǐng)域驅(qū)動中也有模塊的概念。通過把整個系統(tǒng)分割為不同的模塊,來提高代碼的質(zhì)量,增進內(nèi)聚,消除耦合。模塊應(yīng)該具有良好的接口,通過這些接口為其他模塊提供服務(wù)。
聚合、工廠和資源庫都與管理領(lǐng)域?qū)ο蟮纳芷谙嚓P(guān)。
聚合通過一個作為根的實體來訪問其他屬性,用以保持數(shù)據(jù)的一致性。根是外部可以訪問的唯一對象。聚合是用來定義對象所有權(quán)和邊界的領(lǐng)域模式。我們通常不追求模型的完整性,而是讓它們盡量地簡單和容易理解。聚合通過唯一的根實體,建立邊界將內(nèi)部和外部的對象劃分開來。然而實際使用中,根實體的構(gòu)造函數(shù)往往會很大很復(fù)雜。當(dāng)對象的每個客戶程序持有關(guān)于對象構(gòu)建的專有知識時,就意味著領(lǐng)域?qū)ο蠛途酆系姆庋b被破壞了。我們可以利用工廠來完成封裝復(fù)雜的對象創(chuàng)建過程。一種工廠是給聚合的根增加一個方法,這個方法用來創(chuàng)建對象,強化所有不變量,返回創(chuàng)建對象的引用或者拷貝。更好的方法是創(chuàng)建一個專用工廠類,這樣可以保持對象的簡單,不會造成復(fù)雜的構(gòu)建邏輯的混亂。以下情況不需要創(chuàng)建工廠:
1.構(gòu)造過程并不復(fù)雜;
2.對象的創(chuàng)建不涉及到其他對象的創(chuàng)建,所有的屬性需要傳遞給構(gòu)造函數(shù)。
3.客戶程序?qū)崿F(xiàn)很感興趣,可能希望選擇使用策略模式。
4.類是特定的類型,不涉及到繼承,所以不用在一系列的具體實現(xiàn)中進行選擇。
資源庫的目的是封裝所有獲取對象引用所需的邏輯。工廠和資源庫都是模型驅(qū)動設(shè)計中的模式。工廠關(guān)注的是對象的創(chuàng)建,而資源庫關(guān)心的是已經(jīng)存在的對象。需要注意:工廠是"純領(lǐng)域"的,而資源庫會包含對基礎(chǔ)設(shè)施的連接。
領(lǐng)域驅(qū)動設(shè)計是軟件設(shè)計的方法論,從思想到結(jié)構(gòu),闡述了軟件分析設(shè)計思路和方法。對我們的實際工作很有借鑒意義。
以上是對領(lǐng)域驅(qū)動設(shè)計的一點體會,實踐是最好的老師,把理論融入實踐中,并取得成果,其樂無窮啊。就拿以前看一些經(jīng)典源代碼,有的類被命名為XXXRepository,我就很不理解這樣命名的目的,學(xué)習(xí)了領(lǐng)域驅(qū)動設(shè)計,便知道了作者的用心。
【領(lǐng)域驅(qū)動設(shè)計之體會二】相關(guān)文章:
經(jīng)典的領(lǐng)域驅(qū)動設(shè)計在代碼實踐方面的心得體會04-28
活動設(shè)計科學(xué)領(lǐng)域教案08-26
活動設(shè)計健康領(lǐng)域教案(7篇)12-24
靜坐之體會04-27
名片的設(shè)計之電子教案04-28
秋風(fēng)之勁(二)04-27
健康領(lǐng)域心得體會02-20