首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 繽紛校園 英語(yǔ)學(xué)習(xí)
2010考研 | 自學(xué)考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級(jí) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 職稱日語(yǔ) | 職稱英語(yǔ) | 博思 | 口譯筆譯 | GRE GMAT | 日語(yǔ) | 托福
雅思 | 專四專八 | 新概念 | 自考英語(yǔ) | 零起點(diǎn)英、、韓語(yǔ) | 在職申碩英語(yǔ)
在職攻碩英語(yǔ) | 成人英語(yǔ)三級(jí)
等級(jí)考試 | 水平考試 | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 報(bào)檢員 | 外銷員 | 司法考試 | 導(dǎo)游考試 | 教師資格 | 國(guó)際商務(wù)師 | 跟單員
單證員 | 物流師 | 價(jià)格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會(huì)工作者
會(huì)計(jì)職稱 | 注會(huì)CPA | 經(jīng)濟(jì)師 | 統(tǒng)計(jì)師 | 注冊(cè)稅務(wù)師 | 評(píng)估師 | 精算師 | 高會(huì) | ACCA | 審計(jì)師
法律顧問(wèn) | 會(huì)計(jì)證
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構(gòu)師 | 建筑師 | 安全評(píng)價(jià)師
房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 設(shè)備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀(jì)人 | 造價(jià)員
投資項(xiàng)目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評(píng)價(jià) | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價(jià)工程師 | 招標(biāo)師
執(zhí)業(yè)護(hù)士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

實(shí)戰(zhàn)DDD(Domain-DrivenDesign領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))[2]

 Eric認(rèn)為:服務(wù)Service是描述領(lǐng)域概念最自然的方式,是四色原型的MI原型的延續(xù), 優(yōu)秀服務(wù)3個(gè)特征:
  1.與領(lǐng)域概念相關(guān)的操作行為、但不是實(shí)體和值對(duì)象中固有的部分。接口根據(jù)領(lǐng)域模型中其他元素定義操作是無(wú)狀態(tài)的。

  在JiveJdon3中,com.jdon.jivejdon.service.ForumService和Forum實(shí)體模型及其值對(duì)象ForumState共同完成領(lǐng)域模型,其中ForumService屬于應(yīng)用服務(wù)層;而后兩者屬于領(lǐng)域?qū);其他服?wù)ForumMessageService、AccountService和UploadService等都是此類性質(zhì)。

  領(lǐng)域?qū)ο蟮纳芷赟cope

  Spring 1.x剛出來(lái)時(shí)確實(shí)忽悠了大家一把,因?yàn)樗麤](méi)有領(lǐng)域?qū)ο蟮纳芷谥С,直到Spring 2.0才將如new Bean scope,當(dāng)初那些瘋狂捧Spring 1.x 臭腳的所謂高手是不是還是基于數(shù)據(jù)庫(kù)驅(qū)動(dòng)的思維,根本沒(méi)有真正OO模式思維,當(dāng)今天JBoss Seam、Scopes等框架開(kāi)始重視對(duì)象生命周期支持后,曾經(jīng)發(fā)生在Jdon社區(qū)爭(zhēng)戰(zhàn)硝煙已經(jīng)過(guò)去,成為歷史。

  Eric認(rèn)為:每個(gè)對(duì)象獨(dú)有器生命周期,一個(gè)對(duì)象在創(chuàng)建以后,可能要經(jīng)歷各種不同的狀態(tài),并最終消亡。 對(duì)象生命周期由長(zhǎng)短:臨時(shí)對(duì)象;常駐內(nèi)存;有的與其他對(duì)象存在復(fù)雜的依賴關(guān)系;狀態(tài)變化時(shí)必須滿足一些不變量的約束條件。 如何管理這些對(duì)象提出挑戰(zhàn)!處理不好會(huì)偏離MDD的方向。

  在生命周期中維護(hù)對(duì)象的完整性。避免模型由于管理生命周期的復(fù)雜性而陷入困境。有 三個(gè)模式來(lái)處理:聚合(Aggregate):定義清晰的所有權(quán)和邊界使模型更加緊湊,避免出現(xiàn)盤(pán)根錯(cuò)節(jié)的對(duì)象關(guān)系網(wǎng);工廠(Factory)和組合(Respository)。

  當(dāng)一個(gè)對(duì)象生命周期之始,使用工廠和組合提供了訪問(wèn)和控制模型對(duì)象的方法,完善了MDD。 建立聚合的模型,并且把工廠和組合加入設(shè)計(jì)中來(lái),可以使我們系統(tǒng)地對(duì)模型對(duì)象進(jìn)行管理。 聚合圈出一個(gè)范偉,在這個(gè)范圍中,對(duì)象無(wú)論在哪個(gè)生命周期,保持不變性。

  在JiveJdon3.0中,值對(duì)象ForumState是被聚合在實(shí)體模型Forum中,F(xiàn)orum作為ForumState的一個(gè)根,由于它們數(shù)據(jù)必須保持一致性,不變量(invariant)是指無(wú)論何時(shí)發(fā)生數(shù)據(jù)變化必須滿足一致性規(guī)則,由于根控制了訪問(wèn),就無(wú)法繞過(guò)它修改內(nèi)部元素,例如,如果沒(méi)有Forum實(shí)體對(duì)象這個(gè)根,就無(wú)法去修改對(duì)象狀態(tài)ForumState,F(xiàn)orumState獲得是通過(guò)Forum的getter方法獲得的。

  ForumState和Forum的分離有可以使修改狀態(tài)數(shù)據(jù)(當(dāng)發(fā)一個(gè)新帖時(shí),必須更新當(dāng)前的最新帖子為該新帖),不會(huì)影響到Forum其他元素,特別是使用事務(wù)鎖定時(shí),不必鎖住整個(gè)對(duì)象,見(jiàn)"領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)"書(shū)籍P92。

  另外,F(xiàn)orumThread和ForumMessage的關(guān)聯(lián)關(guān)系必設(shè)定成單向的,而不是雙向的,因?yàn)轭I(lǐng)域建模中,關(guān)聯(lián)越簡(jiǎn)單越好。

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索
實(shí)戰(zhàn)DDD(Domain-DrivenDesign領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))[2]網(wǎng)友評(píng)論網(wǎng)友評(píng)論
版權(quán)聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
 gaoxiaoliang