【畢業(yè)學(xué)位論文】(Word原稿)基于.Net Web的Music Store的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)-軟件工程_第1頁(yè)
【畢業(yè)學(xué)位論文】(Word原稿)基于.Net Web的Music Store的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)-軟件工程_第2頁(yè)
【畢業(yè)學(xué)位論文】(Word原稿)基于.Net Web的Music Store的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)-軟件工程_第3頁(yè)
【畢業(yè)學(xué)位論文】(Word原稿)基于.Net Web的Music Store的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)-軟件工程_第4頁(yè)
【畢業(yè)學(xué)位論文】(Word原稿)基于.Net Web的Music Store的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)-軟件工程_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

碩士學(xué)位論文 (專業(yè)學(xué)位) 姓 名: 學(xué) 號(hào): 所在院系:軟件學(xué)院 職業(yè)類別:工程碩士 專業(yè)領(lǐng)域:軟件工程 指導(dǎo)教師: 副指導(dǎo)教師: 二一三年 九 月 基于 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) A in 2010 F N 2013 基于 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 同濟(jì)大學(xué) 學(xué)位論文版權(quán)使用授權(quán)書(shū) 本人完全了解同濟(jì)大學(xué)關(guān)于收集、保存、使用學(xué)位論文的規(guī)定,同意如下各項(xiàng)內(nèi)容:按照學(xué)校要求提交學(xué)位論文的印刷本和電子版本;學(xué)校有權(quán)保存學(xué)位論文的印刷本和電子版,并采用影印、縮印、掃描、數(shù)字化或其它手段保存論文;學(xué)校有權(quán)提供目錄檢索以及提供本學(xué)位論文全文或者部分的閱覽服務(wù);學(xué)校有權(quán)按有關(guān)規(guī)定向國(guó)家有關(guān)部門或者機(jī)構(gòu)送交論文的復(fù)印件和電子版;在不以贏利為目的的前提下,學(xué)??梢赃m當(dāng)復(fù)制論文的部分或全部?jī)?nèi)容用于學(xué)術(shù)活動(dòng)。 學(xué)位論文作者簽名: 年 月 日 同濟(jì)大學(xué)學(xué)位論文原創(chuàng)性聲明 本人鄭重聲明:所呈交的學(xué)位論文,是本人在導(dǎo)師指導(dǎo)下,進(jìn)行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本學(xué)位論文的研究成果不包含任何他人創(chuàng)作的、已公開(kāi)發(fā)表或者沒(méi)有公開(kāi)發(fā)表的作品的內(nèi)容。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確方式標(biāo)明。本學(xué)位論文原創(chuàng)性聲明的法律責(zé)任由本人承擔(dān)。 學(xué)位論文作者簽名: 年 月 日 同濟(jì)大學(xué) 碩士學(xué)位論文 摘要 I 摘要 軟件系統(tǒng)面向?qū)ο蟮脑O(shè)計(jì)思想可謂歷史悠久, 20 世紀(jì) 70 年代的 到今天我們依然將這門語(yǔ)言視為面向?qū)ο笳Z(yǔ)言的基礎(chǔ) , 但是面向?qū)ο笳Z(yǔ)言并不是 萬(wàn)能的 ,如果開(kāi)發(fā)人員認(rèn)為使用面向?qū)ο笳Z(yǔ)言寫(xiě)出來(lái)的程度本身就是面向?qū)ο蟮?,那就大錯(cuò)特錯(cuò)了,實(shí)際開(kāi)發(fā)中,大量的業(yè)務(wù)邏輯堆積在一個(gè)巨型類中的例子屢見(jiàn)不鮮,代碼的復(fù)用性和擴(kuò)展性無(wú)法得到保證。為了解決這樣的問(wèn)題,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)提出了清晰的分層架構(gòu)和領(lǐng)域?qū)ο蟮母拍睿屆嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)進(jìn)入了一個(gè)新的階段,對(duì)企業(yè)級(jí)軟件開(kāi)發(fā)起到了巨大的推動(dòng)作用 。 從領(lǐng)先的軟件設(shè)計(jì)人員開(kāi)始將領(lǐng)域驅(qū)動(dòng)建模以及設(shè)計(jì)是為關(guān)鍵性課題到現(xiàn)在也有多年的歷史了。然而,目前國(guó)內(nèi)卻也幾乎沒(méi)有相關(guān)的文獻(xiàn)來(lái)告訴大家應(yīng)該做什么和如何做,盡管領(lǐng)域驅(qū)動(dòng)建模和設(shè)計(jì)并沒(méi)有被明確化,然而在對(duì)象領(lǐng)域中出現(xiàn)了一種潛在的哲學(xué)體系,它就是我們所說(shuō)的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) ( 本文 主要介紹了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的基本概念、要素和特點(diǎn),并 嘗試 通過(guò)設(shè)計(jì)一個(gè) 一個(gè)精簡(jiǎn)的電子 唱片商店 系統(tǒng)來(lái)展示 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)開(kāi)發(fā)方法 的設(shè)計(jì)過(guò)程那個(gè)和理念。首先,從一步步構(gòu)建 領(lǐng)域通用語(yǔ)言 ( 開(kāi)始 , 然后建立具體的領(lǐng)域模型, 并且通過(guò)分析和解決領(lǐng)域模型中的關(guān)鍵性問(wèn)題精細(xì)化領(lǐng)域模型,通過(guò)使用經(jīng)典 架來(lái)實(shí)現(xiàn)該系統(tǒng)。根據(jù)框架的需要,先是搭建了領(lǐng)域核心模型,最后劃分了領(lǐng)域服務(wù),并且實(shí)踐了 從測(cè)試驅(qū)動(dòng) (行為驅(qū)動(dòng) (發(fā) 來(lái)驗(yàn)證 領(lǐng)域模型 的業(yè)務(wù)邏輯 ,在文中,會(huì)使用到 依賴注入等概念 。 整個(gè)設(shè)計(jì)都充分 突出 和體現(xiàn)了 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)開(kāi)發(fā)方法的一個(gè)完整流程和設(shè)計(jì)理念。 關(guān)鍵詞 : I he a in 970 s, be as we as is It is in is In of of in s be In to a of a it a in t a as a is to to do to is is a In I am to an of to at to by a to of in it in in to we in on I VC in I to of in 碩士學(xué)位論文 目錄 錄 第 1章 引言 . 1 題背景與意 義 . 1 內(nèi)外發(fā)展現(xiàn)狀 . 1 課題的主要研究?jī)?nèi)容 . 2 文的組織結(jié)構(gòu) . 2 第 2章 相關(guān)理論介紹 . 4 . 4 域驅(qū)動(dòng)設(shè)計(jì)概述 . 4 . 5 . 6 . 7 . 8 . 8 . 9 . 10 . 11 . 11 架 . 12 ( . 20 現(xiàn)層實(shí)現(xiàn) . 22 術(shù) . 26 續(xù)集成技術(shù)概述 . 26 術(shù)的實(shí)現(xiàn) . 28 章小結(jié) . 29 第 3章 構(gòu)建領(lǐng)域模型 . 30 何構(gòu)建通用語(yǔ)言 . 30 話場(chǎng)景模擬構(gòu)建通用語(yǔ)言 . 30 勒模型 . 32 化領(lǐng)域模型問(wèn)題 . 34 . 34 個(gè)地分析領(lǐng)域中的問(wèn)題點(diǎn) . 35 建系統(tǒng)權(quán)限管理模型 . 42 同濟(jì)大學(xué) 碩士學(xué)位論文 目錄 實(shí)現(xiàn) . 42 . 44 . 45 I(用戶界面)原型 . 45 . 46 . 46 . 46 . 54 章小結(jié) . 54 第 4章 實(shí)現(xiàn)領(lǐng)域核心模型 . 56 統(tǒng)架構(gòu)回顧 . 56 . 56 . 58 分領(lǐng)域服務(wù) . 61 存服務(wù)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) . 61 單管理服務(wù)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) . 64 . 67 物車服務(wù)設(shè)計(jì)與實(shí)現(xiàn) . 68 告信息服務(wù) . 70 章小結(jié) . 70 第 5章 應(yīng)用 . 71 踐 . 71 . 72 過(guò) 華領(lǐng)域模型中的 . 73 踐 . 79 建 試環(huán)境 . 80 用 試服務(wù) . 81 章小結(jié) . 85 第 6章 基礎(chǔ)設(shè)施層和表現(xiàn)層的實(shí)現(xiàn) . 86 久化架構(gòu)的需求 . 86 用 . 86 實(shí)現(xiàn) . 91 他公共實(shí)用方法的實(shí)現(xiàn) . 94 . 94 I. 96 第 7章 總結(jié)與展望 . 102 結(jié) . 102 望 . 103 同濟(jì)大學(xué) 碩士學(xué)位論文 目錄 V 致謝 . 104 參考文獻(xiàn) . 105 個(gè)人簡(jiǎn)歷、在讀期間發(fā)表的學(xué)術(shù)論文與研究成果 . 106 第 1章 引言 1 第 1 章 引言 題 背景與 意義 眾所周知, 應(yīng)用軟件是為滿足用戶不同領(lǐng)域、不同問(wèn)題的應(yīng)用需求而提供的 ,也就是說(shuō),軟件本身的價(jià)值所在主要是實(shí)現(xiàn)領(lǐng)域邏輯,幫助用戶處理領(lǐng)域問(wèn)題的。然而,在企業(yè)級(jí)應(yīng)用 的開(kāi)發(fā)工作中, 開(kāi)發(fā)人員對(duì)領(lǐng)域業(yè)務(wù)的認(rèn)識(shí),和對(duì)領(lǐng)域知識(shí)的獲得,往往比不上領(lǐng)域?qū)<?。開(kāi)發(fā)人員最熟悉的是技術(shù),這就導(dǎo)致最后 在設(shè)計(jì)軟件的時(shí)候, 開(kāi)發(fā)人員 趨向于一種以技術(shù)為先導(dǎo)的過(guò)程。因?yàn)檐浖念I(lǐng)域需求傳遞到開(kāi)發(fā)團(tuán)隊(duì) 后,開(kāi)發(fā)人員依據(jù)需求上的描述創(chuàng)造出最有可能的假想。在瀑布開(kāi)發(fā)模型中,我們需不停校對(duì),復(fù)核需求分析文檔,盡最大的努力將一份完美的文檔移交給開(kāi)發(fā)人員,然后開(kāi)發(fā)人員根據(jù)文檔,以他們的思維設(shè)計(jì)出一套能夠運(yùn)行的軟件;每當(dāng)需求發(fā)生變更時(shí),開(kāi)發(fā)人員都會(huì)十分頭疼和煩惱,難免就可以聽(tīng)到很多開(kāi)發(fā)人員的怨氣聲。 領(lǐng)域驅(qū)動(dòng)的設(shè)計(jì)是一種截然不同的設(shè)計(jì)方法學(xué),它知道需求是永遠(yuǎn)不是一成不變的,需求是一個(gè)活的文檔,它把軟件系統(tǒng)當(dāng)作業(yè)務(wù)過(guò)程的一個(gè)影射,是 使能動(dòng),而不是驅(qū)動(dòng) 1。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是要你深入到業(yè)務(wù)過(guò)程中,了解業(yè)務(wù)術(shù)語(yǔ)和實(shí)踐方法。技術(shù)方面的事被放在了第二位,只是最終的一種手段而已。 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是敏捷方法的終極表達(dá) ,它是用來(lái)處理不斷變化和發(fā)展的需求。 正如任何一個(gè)從未涉足軟件項(xiàng)目的人都知道一個(gè)項(xiàng)目的需求從開(kāi)始到結(jié)束保持一成不變是極其罕見(jiàn)的,絕大多數(shù)情況是它會(huì)隨著業(yè)務(wù)的增長(zhǎng)和變化而變化2。 內(nèi)外發(fā)展現(xiàn)狀 在傳統(tǒng)的開(kāi)發(fā)工作中,開(kāi)發(fā)人員趨向于一種以技術(shù)為先導(dǎo)的過(guò)程,需求從業(yè)務(wù)方傳遞到開(kāi)發(fā)團(tuán)隊(duì),然后,開(kāi)發(fā)人員依據(jù)需求上的描述創(chuàng)造出最有可能的假想 。在瀑布開(kāi)發(fā)模型中,我們需不停校對(duì),復(fù)核需求分析文檔,盡最大的努力將一份完美的文檔移交給開(kāi)發(fā)人員,然后開(kāi)發(fā)人員根據(jù)文檔,以他們的思維設(shè)計(jì)出一套能夠運(yùn)行的軟件;每當(dāng)需求發(fā)生變更時(shí),開(kāi)發(fā)人員都會(huì)十分頭疼和煩惱,難免就可以聽(tīng)到很多開(kāi)發(fā)人員的怨氣聲。 然而,領(lǐng)域驅(qū)動(dòng)的設(shè)計(jì)是一種截然不同的設(shè)計(jì)方法學(xué),它知道需求是永遠(yuǎn)不是一成不變的,需求是一個(gè)活的文檔,它把軟件系統(tǒng)當(dāng)作業(yè)務(wù)過(guò)程的一個(gè)影射,同濟(jì)大學(xué) 碩士學(xué)位論文 基于 設(shè)計(jì)與實(shí)現(xiàn) 2 是使能動(dòng),而不是驅(qū)動(dòng)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是要你深入到業(yè)務(wù)過(guò)程中,了解業(yè)務(wù)術(shù)語(yǔ)和實(shí)踐方法。技術(shù)方面的事被放在了第二位,只是最終的一種手段而已 。 世界著名軟件建模專家 他在全球各地宣講領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想,開(kāi)設(shè)課程、參加會(huì)議、接受專訪,擁有大批的追隨者。從 20世紀(jì) 80年代開(kāi)始,他就以設(shè)計(jì)師和程序員的雙重身份參與過(guò)許多大型面向?qū)ο笙到y(tǒng)的設(shè)計(jì)和開(kāi)發(fā),涉及各種復(fù)雜的業(yè)務(wù)和技術(shù)領(lǐng)域 ,目前市面上也出現(xiàn)了眾多的關(guān)于 課題的主要研究?jī)?nèi)容 這個(gè)課題的業(yè)務(wù)內(nèi)容不會(huì)過(guò)于復(fù)雜,但希望能夠通過(guò)一個(gè)相對(duì)經(jīng)典的設(shè)計(jì),呈現(xiàn)出一個(gè)完整的以 域設(shè)計(jì)驅(qū)動(dòng) )方法開(kāi)發(fā)和實(shí)現(xiàn)過(guò)程;以往我在學(xué)習(xí)微軟的開(kāi)發(fā)技術(shù)的過(guò)程中 ,也發(fā)現(xiàn)微軟也經(jīng)常會(huì)以一些實(shí)際的案例來(lái)完整的展現(xiàn)他們推廣的技術(shù)如何在現(xiàn)實(shí)的開(kāi)發(fā)過(guò)程中得到應(yīng)用的,譬如,以往的通過(guò) 過(guò) 展現(xiàn) 也希望這個(gè)設(shè)計(jì)可以成為一個(gè)“麻雀雖小,五臟俱全”的設(shè)計(jì)。 名思義,就是一個(gè)音樂(lè)商店,商家可以上架商品,發(fā)布商訊,客戶可以登錄到商店的網(wǎng)站上購(gòu)買相關(guān)的產(chǎn)品,業(yè)務(wù)內(nèi)容可以說(shuō)是三言兩語(yǔ)即可描述清楚的。我想結(jié)合 域設(shè)計(jì)驅(qū)動(dòng) )、 試設(shè)計(jì)驅(qū)動(dòng) )、 為設(shè)計(jì)驅(qū)動(dòng))的 設(shè)計(jì)原則搭建和實(shí)現(xiàn)它,大多情況下,我們使用的還是;軟件最終的目的是實(shí)現(xiàn)某些業(yè)務(wù)和服務(wù),軟件的最終價(jià)值就是提供人們所需要的服務(wù),科學(xué)的開(kāi)發(fā)方法就是應(yīng)該直接從業(yè)務(wù)模型上驅(qū)動(dòng)整個(gè)開(kāi)發(fā) 3。 希望能夠結(jié)合理論,將科學(xué)的方法論應(yīng)用到一個(gè)實(shí)際的項(xiàng)目當(dāng)中,在這個(gè)項(xiàng)目里使用到的方法論,必定是可以舉一反三的 ,該設(shè)計(jì) 所使用到具體技術(shù)主要有: (一 ) 目的代碼的總體設(shè)計(jì)框架 (二 ) 目的 架,數(shù)據(jù)的持久化框架。 (三 ) 了實(shí)現(xiàn) 用 的 架。 (四 ) 了做情景測(cè)試使用的行為測(cè)試驅(qū)動(dòng)框架 . (五 ) 賴注入容器 (六 ) 目的展現(xiàn)層框架 文的組織結(jié)構(gòu) 本文共分為 七 個(gè)章節(jié): 第 1章 引言 3 第一章,引言。說(shuō)明了 項(xiàng)目的 研究意義、國(guó)內(nèi)外發(fā)展現(xiàn)狀,以及本課題的主要研究?jī)?nèi)容 。 第二章, 相關(guān)理論 介紹 。介紹了課題研究的技術(shù)支持和理論支持,其中 涉及到的主要是 計(jì)所涉及的所有理論基礎(chǔ)和本文所使用到的相關(guān)技術(shù)和工具,本章是所有后面章節(jié)的一個(gè)理論基礎(chǔ) 。 第三章, 構(gòu)建領(lǐng)域模型。該設(shè) 計(jì)與傳統(tǒng)的設(shè)計(jì)方法有所不同,在第三章我們通過(guò)對(duì)話的模式構(gòu)建出了領(lǐng)域通用語(yǔ)言,并且在領(lǐng)域通用語(yǔ)言的基礎(chǔ)之上再構(gòu)建了領(lǐng)域模型,通過(guò)深化領(lǐng)域的分析,提出了領(lǐng)域必須解決的一些問(wèn)題,并提出了解決方案。 第四章, 實(shí)現(xiàn)領(lǐng)域核心 模型 。 該設(shè)計(jì)是基于 構(gòu)設(shè)計(jì)的, 構(gòu)里最基礎(chǔ)的就是領(lǐng)域的核心模型,在第四章節(jié)中,主要完成了核心模型的實(shí)現(xiàn)和搭建 ,劃分了所有的領(lǐng)域服務(wù)。 第五章, 應(yīng)用 通過(guò)對(duì)編寫(xiě) 試用例, 象接口的方式測(cè)試了第四章節(jié)中的領(lǐng)域服務(wù),并且以實(shí)際案例使用 示了 第六章, 基礎(chǔ)設(shè)施層和表現(xiàn)層。實(shí)現(xiàn)了 構(gòu)中的基礎(chǔ)設(shè)施層和表現(xiàn)層,主要使用微軟的 現(xiàn) 架,以及實(shí)現(xiàn)了 式。最后,在章節(jié)的最后,描述了展現(xiàn)層的大體實(shí)現(xiàn),主要使用 架構(gòu)。最后還是具體展示了依賴注入( 具體實(shí)現(xiàn)。 第七章,總結(jié)了自己對(duì) 及軟件工程開(kāi)發(fā)學(xué)的一些理解,并提出了展望。同濟(jì)大學(xué) 碩士學(xué)位論文 基于 設(shè)計(jì)與實(shí)現(xiàn) 4 第 2 章 相關(guān) 理論 介紹 域驅(qū)動(dòng)設(shè)計(jì)概述 軟 件開(kāi)發(fā)通常被應(yīng)用到真實(shí)世界中已經(jīng)存在的自 動(dòng)化流程,或者給真實(shí)的業(yè)務(wù)問(wèn)題提供解決方案,即要自動(dòng)化的業(yè)務(wù)流程或者可以用軟件解的現(xiàn)實(shí)問(wèn)題 4。從一開(kāi)始,我們就必需明白軟件脫胎于領(lǐng)域,并跟領(lǐng)域密切相關(guān)。軟件是由代碼最終構(gòu)成的。也許我們被代碼所誘惑,在它上面花費(fèi)了太多的時(shí)間,將軟件看作是簡(jiǎn)單的對(duì)象或者方法。 任何一個(gè)軟件都會(huì)與用戶的活動(dòng)或者業(yè)務(wù)相關(guān)。用戶在其中使用程序的主要環(huán)境成為軟件的 領(lǐng)域 ,英文通常翻譯為“ 大多數(shù)的領(lǐng)域會(huì)涉及到物質(zhì)世界,譬如企業(yè)資金流管理軟件的領(lǐng)域就是貨幣和金融相關(guān)的業(yè)務(wù),領(lǐng)域的概念通常都和用戶的需求緊密相關(guān),通常和計(jì)算機(jī) 世界的概念很少有直接關(guān)系。要開(kāi)發(fā)構(gòu)建一套對(duì)于用戶有價(jià)值的軟件,開(kāi)發(fā)團(tuán)隊(duì)必須要 從 用戶關(guān)心的這些業(yè)務(wù)活動(dòng) 中提取出業(yè)務(wù)知識(shí)的主體。而這所要求的知識(shí)廣度可能是令人生畏的,信息的容量和復(fù)雜度也是令人難于想象的。而 模型 正在處理這種過(guò)載負(fù)擔(dān)的工具。 模型 是知識(shí)的一種有選擇的簡(jiǎn)化和有意識(shí)的組織形式。一個(gè)合適的模型能夠了解信息的含義并聚焦于問(wèn)題的本省 5。 領(lǐng)域模型的最終產(chǎn)物并不是設(shè)計(jì)出某種特殊的圖,譬如我們熟知的 所關(guān)心的是這個(gè)圖要表達(dá)意思。它不僅僅是某個(gè)領(lǐng)域?qū)<翌^腦中的知識(shí),而是對(duì)相關(guān)知識(shí)進(jìn)行嚴(yán)格的組織與選擇性 地一種抽象。領(lǐng)域模型也并不是盡可能去制造出一個(gè)逼真的模型,即使在我們真實(shí)的世界里的事物領(lǐng)域中,我們的模型也不過(guò)是一個(gè)仿真的創(chuàng)造物,譬如我們 在購(gòu)房中心 能夠看到 房子的模型,模型的設(shè)計(jì)人員會(huì)想方設(shè)法凸顯出整個(gè)房子的亮點(diǎn),以一種特殊的方式展現(xiàn)出來(lái)。領(lǐng)域建模人員也應(yīng)該如此,在設(shè)計(jì)的過(guò)程中要緊緊抓住業(yè)務(wù)重點(diǎn),并將其充分體現(xiàn)在構(gòu)建的模型中。最后,這個(gè)模型圖可以表達(dá)的東西,通過(guò)代碼以及語(yǔ)言也是可以表述清楚的。 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中模型的作用歸納起來(lái)有以下三個(gè)用途: (一 ) 模型與設(shè)計(jì)核心的相互塑型。正是模型與實(shí)現(xiàn)之間的緊密聯(lián)系使得模型與現(xiàn) 實(shí)世界相關(guān)并且保證模型的討論分析能夠產(chǎn)生最終的軟件產(chǎn)品,即一個(gè)可運(yùn)行的程序。 第 2章 相關(guān) 理論 介紹 5 (二 ) 模型是所有開(kāi)發(fā)人員所使用的語(yǔ)言的核心。由于模型和實(shí)現(xiàn)是相互綁定的。因此開(kāi)發(fā)人員可以用這種語(yǔ)言來(lái)討論程序。他們能夠在沒(méi)有翻譯的條件下和領(lǐng)域?qū)<疫M(jìn)行交流。 (三 ) 模型用來(lái)提煉知識(shí)。模型是團(tuán)隊(duì)在組織領(lǐng)域知識(shí)和辨別最感興趣的原理是一致同意的方式。在我們選擇的術(shù)語(yǔ)、分解概念并將它們相互聯(lián)系起來(lái)時(shí),模型能夠反映出我們是怎么樣考慮領(lǐng)域問(wèn)題的。開(kāi)發(fā)人員與領(lǐng)域?qū)<覍⑿畔⒎胖糜谀P瓦@種形式中。 如果我們想要進(jìn)一步細(xì)化模型設(shè)計(jì),我們將需要闡述 計(jì)過(guò)程中 的一些構(gòu)成元素:通用語(yǔ)言、分層、實(shí)體、值對(duì)象、服務(wù)、模塊 、聚合、工廠和資源庫(kù)。在下面的段落中,本文將一一進(jìn)行必要的闡述。 用語(yǔ)言 通過(guò)前面段落的介紹,模型的構(gòu)造不是憑空想象的出來(lái)的,它的構(gòu)建需要開(kāi)發(fā)人員和領(lǐng)域?qū)<乙黄饏f(xié)同合作。 但是 ,他們之間的協(xié)作經(jīng)常會(huì) 由于一些基礎(chǔ)交流的障礙而存在難點(diǎn)。開(kāi)發(fā)人員滿腦子都是類、方法、算法、模式,總是想將實(shí)際生活中的概念程序工件做對(duì)應(yīng)。 為克服這種交流方式的不同,在建立模型時(shí),我們必須通過(guò)溝通來(lái)交換對(duì)模型和模型中涉及到的元素的想法,應(yīng)該如何連接它們,哪些是有關(guān)的,哪些不 是?在這種層次上的交流對(duì)一個(gè)成功的項(xiàng)目而言是極為重要的。如果一個(gè)人說(shuō)了什么事情,其他的人不能理解,或者更糟的是錯(cuò)誤理解成其他事情,又有什么機(jī)會(huì)來(lái)保證項(xiàng)目成功呢? 在設(shè)計(jì)過(guò)程中,我們傾向于使用自己的方言,但是沒(méi)有一種方言能成為一種通用的語(yǔ)言,因?yàn)樗鼈兌疾荒軡M足所有的需要。在討論模型和定義模型時(shí),我們確實(shí)需要講同一種語(yǔ)言。那么是哪種語(yǔ)言呢?開(kāi)發(fā)人員的語(yǔ)言?領(lǐng)域?qū)<业恼Z(yǔ)言?介乎兩者之間的語(yǔ)言?領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的一個(gè)核心的原則是使用一種基于模型的語(yǔ)言。因?yàn)槟P褪擒浖M足領(lǐng)域的共同點(diǎn),它很適合作為這種通用語(yǔ)言的構(gòu)造基礎(chǔ)。 使用模型作為語(yǔ)言的核心骨架。要求團(tuán)隊(duì)在進(jìn)行所有的交流是都使用一致的語(yǔ)言,在代碼中也是這樣。在共享知識(shí)和推敲模型時(shí),團(tuán)隊(duì)會(huì)使用演講、文字和圖形。這兒需要確保團(tuán)隊(duì)使用的語(yǔ)言在所有的交流形式中看上去都是一致的。因?yàn)檫@個(gè)原因,這種語(yǔ)言被稱為“ 通用語(yǔ)言( ” 6。 通用語(yǔ)言連接起設(shè)計(jì)中的所有的部分,建立了設(shè)計(jì)團(tuán)隊(duì)良好工作的前提。可能會(huì)花費(fèi)數(shù)周乃至數(shù)月的時(shí)間才能讓一個(gè)大規(guī)模項(xiàng)目的設(shè)計(jì)成型。團(tuán)隊(duì)成員會(huì)發(fā)現(xiàn)一些初始的概念是不正確的或者不合適宜,或者發(fā)現(xiàn)一些需要考慮并放進(jìn)總體設(shè)計(jì)中的新 的設(shè)計(jì)元素。沒(méi)有了通用語(yǔ)言,所有的這一切都是不可能的。 通過(guò)嘗試反映其他可選模型的其他的表述方式,可以消除這個(gè)難點(diǎn)。然后重構(gòu)代碼、重同濟(jì)大學(xué) 碩士學(xué)位論文 基于 設(shè)計(jì)與實(shí)現(xiàn) 6 命名類、方法和模型以適應(yīng)新的模型。使用我們能夠正常理解的普通詞匯,化解交談所使用術(shù)語(yǔ)之間的混亂。構(gòu)建一個(gè)類似這樣的語(yǔ)言會(huì)得到一個(gè)清晰的結(jié)果:模型和語(yǔ)言相互密切關(guān)聯(lián)。一個(gè)對(duì)語(yǔ)言的變更會(huì)變成對(duì)模型的變更。領(lǐng)域?qū)<視?huì)反對(duì)用那些很笨拙的或者不適當(dāng)?shù)淖盅刍蛘呓Y(jié)構(gòu)來(lái)傳達(dá)對(duì)領(lǐng)域的理解。如果領(lǐng)域?qū)<也荒芾斫饽P突蛘哒Z(yǔ)言中的某種內(nèi)容,那么就如同是說(shuō)這種內(nèi)容存在某種錯(cuò)誤。從另一方面講,開(kāi)發(fā)人員應(yīng)該留 意那些與他們?cè)噲D呈現(xiàn)在設(shè)計(jì)中的內(nèi)容存在二義性或者不一致的部分。 層 當(dāng)人們討論分層的時(shí)候,總是很難區(qū)分 區(qū)別,這兩個(gè)詞匯經(jīng)常被用作同義詞, 多地被認(rèn)為是物理上的分離 7錯(cuò)誤 !未找到引用源。 。我們強(qiáng)調(diào)是無(wú)需把不同的層次放在不同計(jì)算機(jī)上運(yùn)行。獨(dú)立出來(lái)的邏輯層,既可以運(yùn)行在臺(tái)式計(jì)算機(jī),也可以運(yùn)行在數(shù)據(jù)庫(kù)服務(wù)器上。 當(dāng)我們創(chuàng)建一個(gè)軟件應(yīng)用時(shí),這個(gè)應(yīng)用的很大一部分是不能直接跟領(lǐng)域關(guān)聯(lián)的,但它們是基礎(chǔ)設(shè)施的一部分或者是為軟件服務(wù) 的。最好能讓?xiě)?yīng)用中的領(lǐng)域部分盡可能少地和其他的部分摻雜在一起,因?yàn)橐粋€(gè)典型的應(yīng)用包含了很多和數(shù)據(jù)庫(kù)訪問(wèn),文件或網(wǎng)絡(luò)訪問(wèn)以及用戶界面等相關(guān)的代碼。在一個(gè)面向?qū)ο蟮某绦蛑?,用戶界面、?shù)據(jù)庫(kù)以及其他支持性代碼經(jīng)常被直接寫(xiě)到業(yè)務(wù)對(duì)象中。附加的業(yè)務(wù)邏輯被嵌入到 件和數(shù)據(jù)庫(kù)腳本的行為中。之所以這樣做的某些原因是這樣可以很容易地讓事情快速工作起來(lái)。但是,當(dāng)領(lǐng)域相關(guān)的代碼被混入到其他層時(shí),要閱讀和思考它也變得極其困難。表面看上去是對(duì) 修改,卻變成了對(duì)業(yè)務(wù)邏輯的修改。對(duì)業(yè)務(wù)規(guī)則的變更可能需要謹(jǐn)慎跟蹤用戶界面層 代碼、數(shù)據(jù)庫(kù)代碼以及其他程序元素。實(shí)現(xiàn)粘連在了一起,模型驅(qū)動(dòng)對(duì)象于是變得不再可行。也很難使用自動(dòng)化測(cè)試。對(duì)于每個(gè)活動(dòng)中涉及到的技術(shù)和邏輯,程序必須保持簡(jiǎn)單,否則就會(huì)變得很難理解。 因此, 因此,將一個(gè)復(fù)雜的程序切分成層。開(kāi)發(fā)每一個(gè)層中內(nèi)聚的設(shè)計(jì),讓每個(gè)層僅依賴于它底下的那層。遵照標(biāo)準(zhǔn)的架構(gòu)模式以提供層的低耦合。將領(lǐng)域模型相關(guān)的代碼集中到一個(gè)層中,把它從用戶界面、應(yīng)用和基礎(chǔ)設(shè)施代碼中分隔開(kāi)來(lái)。釋放領(lǐng)域?qū)ο蟮娘@示自己、 保存自己、管理應(yīng)用任務(wù)等職責(zé),讓它專注于展現(xiàn)領(lǐng)域模型。這會(huì)讓一個(gè)模型進(jìn)一步富含知識(shí),更清晰地捕獲 基礎(chǔ)的業(yè)務(wù)知識(shí),讓它們正常工作。 領(lǐng)域驅(qū)動(dòng)的經(jīng)典分層主要分為: 4 個(gè)層:表現(xiàn)層、應(yīng)用層、領(lǐng)域?qū)?、基礎(chǔ)設(shè)施層。 第 2章 相關(guān) 理論 介紹 7 表 域驅(qū)動(dòng)設(shè)計(jì)的經(jīng)典分層 用戶界面 /展現(xiàn)層 負(fù)責(zé)向用戶展現(xiàn)信息以及解釋用戶命令。 應(yīng)用層 很薄的一層,用來(lái)協(xié)調(diào)應(yīng)用的活動(dòng)。它不包含業(yè)務(wù)邏輯。它不保留業(yè)務(wù)對(duì)象的狀態(tài),但它保有應(yīng)用任務(wù)的進(jìn)度狀態(tài)。 領(lǐng)域?qū)?本層包含關(guān)于領(lǐng)域的信息。這是業(yè)務(wù)軟件的核心所在。在這里保留業(yè)務(wù)對(duì)象的狀態(tài),對(duì)業(yè)務(wù)對(duì)象和它們狀態(tài)的持久化被委托給了基礎(chǔ)設(shè)施層。 基礎(chǔ)設(shè)施層 本層作為其他層的支撐庫(kù)存在。它提供了層間的通 信,實(shí)現(xiàn)對(duì)業(yè)務(wù)對(duì)象的持久化,包含對(duì)用戶界面層的支撐庫(kù)等作用。 和值對(duì)象 在領(lǐng)域中,可以抽象出擁有標(biāo)識(shí)符的對(duì)象,標(biāo)示符在經(jīng)歷了各種狀態(tài)之后仍然能夠保持不變,我們把這樣的對(duì)象稱為實(shí)體 , 所以實(shí)體的特性就是擁有 標(biāo)識(shí) 符8。 有很多不同的方式來(lái)為每一個(gè)對(duì)象創(chuàng)建一個(gè)唯一的標(biāo)識(shí)符:可能由一個(gè)模型來(lái)自動(dòng)產(chǎn)生 軟件中內(nèi)部使用,不會(huì)讓它對(duì)用戶可見(jiàn);它可能是數(shù)據(jù)庫(kù)表的一個(gè)主鍵,會(huì)被保證在數(shù)據(jù)庫(kù)中是唯一的。只要對(duì)象從數(shù)據(jù)庫(kù)中被檢索,它的 會(huì)被檢索出并在內(nèi)存中被重建; 可能由用戶創(chuàng)建,例如每個(gè)機(jī)場(chǎng) 會(huì)有一個(gè)關(guān)聯(lián)的代碼。每個(gè)機(jī)場(chǎng)擁有一個(gè)唯一的字符串 個(gè)字符串是在世界范圍內(nèi)通用的,被世界上的每一個(gè)旅行代理使用以標(biāo)識(shí)它們的旅行計(jì)劃中涉及的機(jī)場(chǎng)。另一種解決方案是使用對(duì)象的屬性來(lái)創(chuàng)建標(biāo)識(shí)符,當(dāng)這個(gè)屬性不足以代表標(biāo)識(shí)符時(shí),另一個(gè)屬性就會(huì)被加入以幫助確定每一個(gè)對(duì)象。 實(shí)體在領(lǐng)域中是必須的對(duì)象,但是將所有的對(duì)象視為實(shí)體也會(huì)帶來(lái)隱含的性能問(wèn)題,因?yàn)樾枰獙?duì)每個(gè)對(duì)象產(chǎn)生一個(gè)實(shí)例。 如果我們對(duì)某個(gè)對(duì)象是什么不感興趣,只關(guān)心它擁有的屬性,用它來(lái)描述領(lǐng)域的特殊方面、且沒(méi)有標(biāo)識(shí)符的一個(gè)對(duì)象,那么我可以用 值對(duì)象 。 以下列舉一個(gè)經(jīng) 典的例子充分體現(xiàn)實(shí)體和值對(duì)象的關(guān)系 ;一個(gè)客戶實(shí)體一般都包含標(biāo)示符,然而在客戶的屬性中,我們可以抽象出一個(gè)值得對(duì)象“地址”,地址這個(gè)值對(duì)象包含街道、城市、國(guó)家三個(gè)屬性,這個(gè)值對(duì)象以后就可以被其他實(shí)體共享使用。 如圖 圖 對(duì)象 同濟(jì)大學(xué) 碩士學(xué)位論文 基于 設(shè)計(jì)與實(shí)現(xiàn) 8 務(wù) 在領(lǐng)域分析和建模的過(guò)程中,我們會(huì)發(fā)現(xiàn)有些方面的領(lǐng)域是很難映射成對(duì)象的。對(duì)象要通??紤]的是擁有屬性,對(duì)象會(huì)管理它的內(nèi)部狀態(tài)并暴露行為。在我們開(kāi)發(fā)通用語(yǔ)言時(shí),領(lǐng)域中的主要概念被引入到語(yǔ)言中,語(yǔ)言中的名詞很容易被映射成對(duì)象。語(yǔ)言中對(duì)應(yīng)那些名詞的動(dòng)詞變成那些對(duì) 象的行為。但是有些領(lǐng)域中的動(dòng)作,它們是一些動(dòng)詞,看上去卻不屬于任何對(duì)象。它們代表了領(lǐng)域中的一個(gè)重要的行為,所以不能忽略它們或者簡(jiǎn)單的把它們合并到某個(gè)實(shí)體或者值對(duì)象中。給一個(gè)對(duì)象增加這樣的行為會(huì)破壞這個(gè)對(duì)象,讓它看上去擁有了本該屬于它的功能。但是,要使用一種面向?qū)ο笳Z(yǔ)言,我們必須用到一個(gè)對(duì)象才行。我們不能只擁有一個(gè)單獨(dú)的功能,它必須附屬于某個(gè)對(duì)象 9。通常這種行為類的功能會(huì)跨越若干個(gè)對(duì)象,或許是不同的類。例如,為了從一個(gè)賬戶向另一個(gè)賬戶轉(zhuǎn)錢,這個(gè)功能應(yīng)該放到轉(zhuǎn)出的賬戶還是在接收的賬戶中?感覺(jué)放在這兩個(gè)中的哪 一個(gè)也不對(duì)勁。當(dāng)這樣的行為從領(lǐng)域中被識(shí)別出來(lái)時(shí),最佳實(shí)踐是將它聲明成一個(gè)服務(wù)。這樣的對(duì)象不再擁有內(nèi)置的狀態(tài)了,它的作用是為了簡(jiǎn)化所提供的領(lǐng)域功能。服務(wù)所能提供的協(xié)調(diào)作用是非常重要的,一個(gè)服務(wù)可以將服務(wù)于實(shí)體和值對(duì)象的相關(guān)功能進(jìn)行分組。最好顯式聲明服務(wù),因?yàn)樗鼊?chuàng)建了領(lǐng)域中的一個(gè)清晰的特性,它封裝了一個(gè)概念。把這樣的功能放入實(shí)體或者值對(duì)象都會(huì)導(dǎo)致混亂,因?yàn)槟切?duì)象的立場(chǎng)將變得不清楚。服務(wù)擔(dān)當(dāng)了一個(gè)提供操作的接口。服務(wù)在技術(shù)框架中是通用的,但它們也能被運(yùn)用到領(lǐng)域?qū)又?。一個(gè)服務(wù)不是在執(zhí)行服務(wù)的對(duì)象,而與被執(zhí)行操作的 對(duì)象相關(guān)。在這種情況下,一個(gè)服務(wù)通常變成了多個(gè)對(duì)象的一個(gè)鏈接點(diǎn)。這也是為什么行為很自然地依附于一個(gè)服務(wù)而不是被包含到其他領(lǐng)域?qū)ο蟮囊粋€(gè)原因。如果這樣的功能被包含進(jìn)領(lǐng)域?qū)ο?,就?huì)在領(lǐng)域?qū)ο蠛统蔀椴僮魇芤嬲叩膶?duì)象之間建立起一個(gè)密集的關(guān)聯(lián)網(wǎng)。眾多對(duì)象間的高耦合度是糟糕設(shè)計(jì)的一個(gè)信號(hào),因?yàn)檫@會(huì)讓代碼很難閱讀與理解,更重要的是,這會(huì)導(dǎo)致很難進(jìn)行變更。一個(gè)服務(wù)應(yīng)該不是對(duì)通常屬于領(lǐng)域?qū)ο蟮牟僮鞯奶娲?。我們不?yīng)該為每一個(gè)需要的操作來(lái)建立一個(gè)服務(wù)。但是當(dāng)一個(gè)操作凸現(xiàn)為一個(gè)領(lǐng)域中的重要概念時(shí),就需要為它建立一個(gè)服務(wù)了。以下是服 務(wù)的 3 個(gè)特征 錯(cuò)誤 !未找到引用源。 : (一 ) 服務(wù)執(zhí)行的操作涉及一個(gè)領(lǐng)域概念,這個(gè)領(lǐng)域概念通常不屬于一個(gè)實(shí)體或者值對(duì)象。 (二 ) 被執(zhí)行的操作涉及到領(lǐng)域中的其他的對(duì)象。 (三 ) 操作是無(wú)狀態(tài)的。 塊 第 2章 相關(guān) 理論 介紹 9 當(dāng)領(lǐng)域模型隨著項(xiàng)目的復(fù)雜度變得越來(lái)越大的時(shí)候,理解不同部件與部件之間的關(guān)系就變得十分困難?;诖嗽颍苡斜匾獙⒛P徒M織進(jìn)模塊。模塊被用來(lái)作為組織相關(guān)概念和任務(wù)以便降低復(fù)雜性的一種方法。模塊在許多項(xiàng)目中被廣泛使用。如果 要 查看??彀膬?nèi)容以及模塊間的關(guān)系,就會(huì)很容易從中掌握大型模型的 概況。理解了模型間的交互之后,人們就可以開(kāi)始處理模塊中的細(xì)節(jié)了。因此劃分模塊 是管理復(fù)雜性的簡(jiǎn)單有效的方法。 另一個(gè)使用模塊的原因跟代碼質(zhì)量有關(guān); 軟件代碼應(yīng)該具有高層次的內(nèi)聚性和低層次的耦合度。雖然內(nèi)聚開(kāi)始于類和方法級(jí)別,它也可以應(yīng)用于模塊級(jí)別。強(qiáng)烈推薦將高關(guān)聯(lián)度的類分組到一個(gè)模塊以提供盡可能大的內(nèi)聚 10。有很多類型的內(nèi)聚。最常用到的兩個(gè)是通信性內(nèi)聚和功能性內(nèi)聚。通信性內(nèi)聚通常在模塊的部件操作相同的數(shù)據(jù)時(shí)使用。把它們分到一組很有意義,因?yàn)樗鼈冎g存在很強(qiáng)的關(guān)聯(lián)性。功能性內(nèi)聚在模塊中的部件協(xié)同工作以完成定義好 的任務(wù)時(shí)使用。這被認(rèn)為是最佳的內(nèi)聚類型。在設(shè)計(jì)中使用模塊是一種增進(jìn)內(nèi)聚和消除耦合的方法。模塊應(yīng)該由在功能上或者邏輯上屬于一體的元素構(gòu)成,以保證內(nèi)聚。模塊應(yīng)該具有定義好的接口,這些接口可以被其他的模塊訪問(wèn)。最好用訪問(wèn)一個(gè)接口的方式替代調(diào)用模塊中的三個(gè)對(duì)象,因?yàn)檫@可以降低耦合。低耦合降低了復(fù)雜性并增強(qiáng)了可維護(hù)性。當(dāng)要執(zhí)行定義好的功能時(shí),模塊間僅有極少的連接會(huì)讓人很容易理解系統(tǒng)是如何工作的,這要比每個(gè)模塊同其他的模塊間存在許多關(guān)聯(lián)好很多。 給定的模塊名稱會(huì)成為通用語(yǔ)言的組成部分。模塊和它們的名字應(yīng)該能反映對(duì)領(lǐng)域的深 層理解。 合 域?qū)ο笤谒鼈兊纳趦?nèi)會(huì)歷經(jīng)若干種狀態(tài),直到最后消亡。有時(shí)它們會(huì)被保存到一個(gè)永久的位置,例如數(shù)據(jù)庫(kù)中,這樣可以在以后的日子里被檢索到,或者被存檔。有時(shí)它們會(huì)被完全從系統(tǒng)中清除掉,包括從數(shù)據(jù)庫(kù)和歸檔介質(zhì)上。管理領(lǐng)域?qū)ο蟮纳芷谧陨砭蜁?huì)遇到一個(gè)挑戰(zhàn),如果做得不恰當(dāng),就會(huì)對(duì)領(lǐng)域模型產(chǎn)生一個(gè)負(fù)面的影響。 聚合是一個(gè)用來(lái)定義對(duì)象所有權(quán)和邊界的領(lǐng)域模式 錯(cuò)誤 !未找到引用源。 。工廠和資源庫(kù)是另外的兩個(gè)設(shè)計(jì)模式,用來(lái)幫助我們處理對(duì)象的創(chuàng)建和 存儲(chǔ)問(wèn)題 。 聚合是針對(duì)數(shù)據(jù)變化可以考慮成一個(gè)單元的一組相關(guān)的對(duì)象。聚合使用邊界將內(nèi)部和外部的對(duì)象劃分開(kāi)來(lái)。每個(gè)聚合有一個(gè)根。這個(gè)根是一個(gè)實(shí)體,并且它是外部可以訪問(wèn)的唯一的對(duì)象。根可以保持對(duì)任意聚合對(duì)象的引用,并且其他的對(duì)象可以持有任意其他的對(duì)象,但一個(gè)外部對(duì)象只能持有根對(duì)象的引用。如果邊界內(nèi)有其他的實(shí)體,那些實(shí)體的標(biāo)識(shí)符是本地化的,只在聚合內(nèi)有意義。 同濟(jì)大學(xué) 碩士學(xué)位論文 基于 設(shè)計(jì)與實(shí)現(xiàn) 10 聚合需要 保持?jǐn)?shù)據(jù)一致性 ,其他對(duì)象只能持有根對(duì)象的引用,這意味著它們不能直接變更聚合內(nèi)的其他的對(duì)象。如果根從內(nèi)存中被刪除或者移除,聚合內(nèi)的其他所有的對(duì)象也將被刪 除,因?yàn)樵俨粫?huì)有其他的對(duì)象持有它們當(dāng)中的任何一個(gè)了。 下面具體用一個(gè)實(shí)例說(shuō)明問(wèn)題: 如圖 圖 合與聚合根 上圖中, 聚合的根,并且其他所有的對(duì)象都是內(nèi)部的。如果需要 個(gè)它的拷貝將被傳遞到外部對(duì)象。 廠 單對(duì)象的創(chuàng)建,我們通過(guò)一個(gè)構(gòu)造函數(shù)就可以解決了。然后在領(lǐng)域環(huán)境中,當(dāng)對(duì)象的創(chuàng)建涉及到很多領(lǐng)域知識(shí),包含諸多領(lǐng)域邏輯的時(shí)候,例如 關(guān)于對(duì)象內(nèi)部結(jié)構(gòu)的,關(guān)于所 含對(duì)象之間的關(guān)系的以及應(yīng)用其上的規(guī)則等。這意味著對(duì)象的每個(gè)客戶程序?qū)⒊钟嘘P(guān)于對(duì)象 構(gòu)建的專有知識(shí)。這破壞了領(lǐng)域?qū)ο蠛途酆系姆庋b。如果客戶程序?qū)儆趹?yīng)用層,領(lǐng)域?qū)拥囊徊糠謱⒈灰频搅送膺?,擾亂整個(gè)設(shè)計(jì)一個(gè)對(duì)象的創(chuàng)建可能是它自身的主要操作,但是復(fù)雜的組裝操作不該成為被創(chuàng)建對(duì)象的職責(zé)。組合這樣的職責(zé)會(huì)產(chǎn)生笨拙的設(shè)計(jì),也很難讓人理解。 因此,有必要引入一個(gè)新的概念,這個(gè)概念可以幫助封裝復(fù)雜的對(duì)象創(chuàng)建過(guò)程,它就是工廠( 工廠用來(lái)封裝對(duì)象創(chuàng)建所必需的知識(shí),它們對(duì)創(chuàng)建第 2章 相關(guān) 理論 介紹 11 聚合特別有用 11。當(dāng)聚合的根建立時(shí),所有聚合包含的對(duì)象將隨之建立,所有的不變量得到了強(qiáng)化。 對(duì)應(yīng) 計(jì)模式中,我們有工廠 方法和抽象工廠模式。 源庫(kù) 模型驅(qū)動(dòng)設(shè)計(jì)中,對(duì)象從被創(chuàng)建開(kāi)始,直到被刪除或者被歸檔結(jié)束,是有一個(gè)生命周期的。一個(gè)構(gòu)造函數(shù)或者工廠

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論