天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

分享一些如何分析和設(shè)計(jì)具有動(dòng)態(tài)行為的領(lǐng)域模型的經(jīng)驗(yàn)

  好久沒有寫文章了,最近比較忙,另一方面也是感覺自己在這方面沒什么實(shí)質(zhì)性的突破。但是今天終于感覺自己小有所成,有些可以值得和大家分享的東西,并且完成了兩個(gè)可以表達(dá)自己想法的Demo。因此,趁現(xiàn)在有點(diǎn)時(shí)間,是寫文章和大家分享的時(shí)候了。

  首先給出這兩個(gè)Demo的源代碼的壓縮包的下載地址,因?yàn)橹坝胁┯颜f他沒有裝VS2010而沒辦法運(yùn)行Demo,所以這次我分別用VS2008和VS2010實(shí)現(xiàn)了兩個(gè)版本。

  http://files.cnblogs.com/NETfocus/DCIBasedDDD.rar

  下面先分享一下我最近研究的一些知識(shí)及我對(duì)這些知識(shí)的自我感悟,然后再結(jié)合Demo中的示例講解如何將這些感悟應(yīng)用到實(shí)際。 

  一、理論知識(shí):

  我最近一直在學(xué)習(xí)下面這些東西:

  1. 面向?qū)ο蠓治雠c設(shè)計(jì),即Object Oriented Analysis and Design(OOA/D)
  2. 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),即Domain Driven Design(DDD)
  3. 四色原型:MI原型、Role原型、PPT原型、Description原型
  4. DCI架構(gòu):Data Context Interaction
  5. CQRS架構(gòu): 命令查詢職責(zé)分離原則,即Command Query Responsibility Segregation

  通過學(xué)習(xí)以上這些知識(shí),讓我對(duì)面向?qū)ο蟮姆治觥⒃O(shè)計(jì)、實(shí)現(xiàn)有了一些新的認(rèn)識(shí)。

  1. 碰到一個(gè)業(yè)務(wù)系統(tǒng),我們?cè)撊绾畏治鰳I(yè)務(wù),分析需求,并最后得到一個(gè)只包含業(yè)務(wù)概念的模型?答案是通過四色原型進(jìn)行業(yè)務(wù)建模。四色原型的中心思想是:一個(gè)什么什么樣的人或組織或物品或地點(diǎn)以某種角色在某個(gè)時(shí)刻或某段時(shí)間內(nèi)參與某個(gè)活動(dòng)。 其中“什么什么樣的”就是DESC,“人或組織或物品或地點(diǎn)”就是PPT,“角色”就是Role,而”某個(gè)時(shí)刻或某段時(shí)間內(nèi)的某個(gè)活動(dòng)"就是MI。更具體的說明請(qǐng)參看我之前整理的一篇文章:四色原型的學(xué)習(xí)心得分享

  2. 業(yè)務(wù)模型建好了,該如何通過面向?qū)ο蟮姆治雠c設(shè)計(jì)方法來進(jìn)行對(duì)象建模呢? DDD和DCI思想可以幫助我們。首先,DDD能夠指導(dǎo)我們建立一個(gè)靜態(tài)的領(lǐng)域模型,該領(lǐng)域模型能夠清楚的告訴我們建立出來的對(duì)象“是什么”,但是DDD卻不能很自然的解決“做什么”的問題。大家都知道DDD在對(duì)象設(shè)計(jì)的部分實(shí)際上是一種充血模型的方式,它強(qiáng)調(diào)對(duì)象不僅有屬性還會(huì)有行為,如果行為是跨多個(gè)領(lǐng)域?qū)ο蟮模瑒t在DDD中用領(lǐng)域服務(wù)解決。但是DDD卻沒有完整的考慮對(duì)象與對(duì)象之間的交互如何完成,雖然它通過領(lǐng)域服務(wù)的方式協(xié)調(diào)多個(gè)對(duì)象之間進(jìn)行交互或者在應(yīng)用層協(xié)調(diào)多個(gè)對(duì)象進(jìn)行交互。但是在DDD中,對(duì)象往往會(huì)擁有很多不該擁有的屬性或行為。在我學(xué)習(xí)了DCI架構(gòu)之后,我認(rèn)識(shí)到了DDD的很多不足。

  以下是DCI的核心思想: 

  • 對(duì)象扮演某個(gè)角色進(jìn)入場景,然后在場景中進(jìn)行交互,場景的參與者就是對(duì)象所扮演的角色;
  • 一個(gè)對(duì)象可以扮演多個(gè)角色,一個(gè)角色也可以被多個(gè)對(duì)象扮演;
  • 對(duì)象的屬性和行為分為:A. 核心屬性和行為,這些屬性或行為是不依賴于任何場景的;B. 場景屬性和行為,對(duì)象通過扮演某個(gè)角色進(jìn)入某個(gè)特定場景時(shí)擁有的屬性或行為,一旦對(duì)象離開了這個(gè)場景,不再扮演了這個(gè)角色后,這些場景屬性或行為也就不再屬于該對(duì)象了;比如人有核心的屬性和行為:身高、體重、吃飯、睡覺,然后當(dāng)人扮演教師的角色在教室里上課時(shí),他則具有上課的行為,一旦回到家里,就又變成了一個(gè)普通的人;比如一個(gè)物品,在生產(chǎn)時(shí)叫產(chǎn)品,在銷售時(shí)叫商品,壞了的時(shí)候叫廢品,它在不同階段扮演不同的角色所具有的屬性是不一樣的;
  • 場景的生命周期,場景是一個(gè)時(shí)間與空間的結(jié)合,可以理解為某個(gè)活動(dòng);一旦活動(dòng)結(jié)束,則場景也就消失;
  • DCI中的D可以理解為DDD中的領(lǐng)域模型;場景中交互的是角色,而不是領(lǐng)域?qū)嶓w。場景屬于DSL的思考層面,更接近于需求和用例。而領(lǐng)域也是偉大的出現(xiàn),但是不能為了領(lǐng)域而領(lǐng)域,為什么呢?因?yàn)閳鼍笆谴蟾?,用例是大哥。領(lǐng)域的存在是為了控制固定概念的部分,這樣在某種成度上控制了一定的復(fù)雜性和提高了可控性,而DCI則解決了可變性和需求的問題。從某種意義上來說,“領(lǐng)域?qū)樱ㄔ贒CI中可能不會(huì)太凸顯領(lǐng)域?qū)?,不如OLD, DDD那么凸顯)” 是為了DCI架構(gòu)服務(wù)的。
  • 角色是人類的主觀意識(shí),用于對(duì)象分析和設(shè)計(jì)階段,但是在運(yùn)行階段,角色和對(duì)象實(shí)體是一體的,軟件運(yùn)行過程中只有對(duì)象,只是這些對(duì)象在參與某個(gè)活動(dòng)時(shí)扮演了某個(gè)角色而已。

  3. 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中對(duì)象設(shè)計(jì)部分的一些要點(diǎn): 

  • DDD的在對(duì)象設(shè)計(jì)方面的最大貢獻(xiàn)之處在于其實(shí)體、值對(duì)象,以及聚合邊界的三個(gè)部分,通過這三個(gè)概念,我們可以將對(duì)象的靜態(tài)結(jié)構(gòu)設(shè)計(jì)好。

    it知識(shí)庫分享一些如何分析和設(shè)計(jì)具有動(dòng)態(tài)行為的領(lǐng)域模型的經(jīng)驗(yàn),轉(zhuǎn)載需保留來源!

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人高清精品免费5388密 | 精品国产美女AV久久久久 | 亚洲免费无码中文在线 | 视频一区国产精戏刘婷30 | 99久久中文字幕伊人情人 | 久久精品国产福利电影网 | 性XXXXX搡XXXXX搡景甜 | 成人免费公开视频 | 一区二区视频在线观看高清视频在线 | 欧美国产精品主播一区 | 短篇合集纯肉高H深陷骚 | 为什么丈夫插我我却喜欢被打着插 | 伊人久久大香线蕉综合影 | 久草国产在线播放 | 国语自产二区高清国语自产拍 | 和搜子的日子 在线观看 | 性女传奇快播 | 国语自产拍大学生在线观看 | 披黑人猛躁10次高潮 | 高h 纯肉文| 久青草国产在线视频 | 国产亚洲精品久久久久久鸭绿欲 | 久久re视频这里精品青 | 亚洲国产精品天堂在线播放 | 亚洲综合色五月久久婷婷 | 国产不卡一卡2卡三卡4卡网站 | 欧美人成人亚洲专区中文字幕 | 中文在线观看免费网站 | 少妇精油按摩 | 日本一区二区三区在线观看网站 | 久久青青草视频在线观 | adc年龄确认大驾光临入口 | 亚洲国产成人99精品激情在线 | 大屁股国产白浆一二区 | 国产亚洲tv在线观看 | 野花韩国视频中文播放 | 久久免费国产视频 | 国产精品久久久久久久久爆乳 | 爽爽窝窝午夜精品一区二区 | 欧美高清videos 360p| 亚洲春色AV无码专区456 |