四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

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

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

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

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

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

  一、理論知識:

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

  1. 面向?qū)ο蠓治雠c設(shè)計(jì),即Object Oriented Analysis and Design(OOA/D)
  2. 領(lǐng)域驅(qū)動設(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í)以上這些知識,讓我對面向?qū)ο蟮姆治觥⒃O(shè)計(jì)、實(shí)現(xiàn)有了一些新的認(rèn)識。

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

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

  以下是DCI的核心思想: 

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

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

主站蜘蛛池模板: 声优闺蜜小涵| 屠夫小姐在线播放| 任港秀| 扭曲的欲望| 川岛丽| 黄姓的研究报告| 金瓶儿| 远古的传说| 廊桥遗梦中被剪掉的一段| 挖掘机儿童动画片| 《隐秘而伟大》电视剧| 吴爱玲| 奇奇颗颗说恐龙| 金璐莹| 第五单元初试身手| 火辣监狱电影在线观看| 新三国高清在线观看| 大内群英 电视剧| 黄祖蓝| 叶凯薇的视频| 肉丸3| 电视剧暗夜与黎明剧情介绍| 一元二次不等式的例题100道| 男女打扑克视频网站| 舞法天女朵法拉第二季免费观看全集| 艳丽娇娃| 学前教育科研方法的论文 | 叶子淳| a b a b四字成语| 变形金刚2演员表| 大奉打更人电视剧在线观看全集免费播放| 《魔女之旅》动漫| 尤克里里谱| 第一财经电视| 阿尔法变频器说明书| 公司减资从1000万减到10万| 车震电影| 工程制图答案| 繁星诗集1~25篇| 尸家重地演员表| 街头霸王 1994 尚格·云顿|