<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > Domain Model 探索

      Domain Model 探索
      2010-01-14 22:27:36  作者:  來(lái)源:

      一直想系統(tǒng)的整理一下自己有關(guān)Domain Model實(shí)踐的嘗試。但總覺(jué)得自己的想法還不夠系統(tǒng)而作罷。
      然而從另一方面看“系統(tǒng)的東西”也許永遠(yuǎn)做不到,失去了目標(biāo)的生活該會(huì)多乏味。
      因此我決定將自己有關(guān)Domain Model設(shè)計(jì)的有關(guān)實(shí)踐和思考和盤(pán)托出,也算是拋磚引玉。歡迎大家
      參與討論,遇到同你的觀點(diǎn)相左的地方,希望能以包容的態(tài)度來(lái)面對(duì),我們是朝同一方向走的伙伴而不是
      相互對(duì)視的敵人。:)

      在深入討論之前我先拋出一些原則和概念,最后你會(huì)看到這些概念和原則的威力。
      1.按照概念依賴(lài)的原則來(lái)組織業(yè)務(wù)層。
      2.將業(yè)務(wù)活動(dòng)(業(yè)務(wù)流程)建模成類(lèi)。
      3.用業(yè)務(wù)活動(dòng)(業(yè)務(wù)流程)作為關(guān)聯(lián)整個(gè)業(yè)務(wù)層各種對(duì)象的骨架。
      4.在業(yè)務(wù)活動(dòng)中鑿出擴(kuò)展點(diǎn),使用不同接口分離不同性質(zhì)業(yè)務(wù)對(duì)象。
      5.將對(duì)象的存儲(chǔ)理解為業(yè)務(wù)層概念。
      ......

      概念依賴(lài)

      這是我認(rèn)為能否得到良好業(yè)務(wù)層最重要的概念。
      在我系統(tǒng)框架設(shè)計(jì)將要完成,開(kāi)始涉及業(yè)務(wù)層設(shè)計(jì)時(shí),我腦袋一片空白,書(shū)上,大家討論的大多是整個(gè)系統(tǒng)的結(jié)構(gòu)從UI層
      到服務(wù)層到數(shù)據(jù)訪問(wèn)層到數(shù)據(jù)庫(kù)。到底業(yè)務(wù)層該如何組織?Martin Fowler的POEAA的書(shū)中沒(méi)有回答。找到的相關(guān)
      書(shū)籍也都過(guò)于空泛。Martin Fowler的分析模式有些用處,但不夠系統(tǒng)。透過(guò)Martin fowler網(wǎng)站,我拿到了
      Domain Driven Design的發(fā)行前版本。該書(shū)給了我很大的啟示。其中的要點(diǎn)有:
      關(guān)于關(guān)聯(lián):
      1.Imposing a traversal direction (強(qiáng)制一個(gè)關(guān)聯(lián)的導(dǎo)航方向)
      ......
      關(guān)于Responsibility Layers(業(yè)務(wù)職責(zé)層)的劃分:
      作者給出了三個(gè)指導(dǎo)原則:Conceptual dependency.(概念依賴(lài))為其中一項(xiàng)。
      書(shū)中給出的描述的是業(yè)務(wù)職責(zé)層上層的對(duì)象需要通過(guò)下層對(duì)象才能在概念上完整,
      相反下層對(duì)象則可獨(dú)立于上層對(duì)象存在含義。這樣天然的下層對(duì)象相對(duì)于上層對(duì)象
      會(huì)更穩(wěn)定。并且在今后演變的過(guò)程中,使同擴(kuò)展的方式來(lái)完善系統(tǒng),而不是改變對(duì)象
      的方式。
      通過(guò)實(shí)踐,我覺(jué)得這條原則可以應(yīng)用在任何兩個(gè)有關(guān)聯(lián)的業(yè)務(wù)對(duì)象上。通?梢酝ㄟ^(guò)
      概念依賴(lài)先建立一個(gè)導(dǎo)航方向。這能夠滿足大多數(shù)的需求。當(dāng)確實(shí)需要反向?qū)Ш綍r(shí),
      只要理由充分可以隨時(shí)加上,并且如果先前將這兩個(gè)對(duì)象放入不同包中,這時(shí)需要
      將他們合并到同一個(gè)包中。
      我見(jiàn)過(guò)一個(gè)不好的設(shè)計(jì)。Customer具有很多Flag分別標(biāo)記該客戶是否掛失,凍結(jié),注銷(xiāo)等等。
      通常叫做客戶狀態(tài),然而這是不對(duì)的,這違背了單一職責(zé)原則。事實(shí)上除了注銷(xiāo)外
      掛失和凍結(jié)都不應(yīng)該算作Customer的本質(zhì)屬性。相反我把他們看作某種約束,進(jìn)而把掛失看作
      一種協(xié)議.....因?yàn)镃ustomer的概念可以不依賴(lài)于掛失和凍結(jié)的概念,相反掛失和凍結(jié)卻要依賴(lài)
      Customer的概念,應(yīng)為這是他們動(dòng)作的主體。
      同樣的一開(kāi)始就讓Customer有GetAccount的方法同樣不好。因?yàn)镃ustomer的概念確實(shí)不依賴(lài)Account
      XXXAccount卻可以有Customer的屬性,Account在概念上依賴(lài)Customer。

      安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        日本中文乱码字幕在线网站 | 在线亚洲中文精品第1页视频 | 香蕉人在线香蕉人在线8 | 呦呦日韩欧美一区二区 | 日韩精品一区二区亚洲 | 亚洲精品国产官网 |