<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE之巔

     

    分層模式中的常見(jiàn)問(wèn)題

    引言
    分層結(jié)構(gòu)是目前復(fù)雜應(yīng)用系統(tǒng)開(kāi)發(fā)時(shí)普遍使用的模式,軟件中層之間的依賴關(guān)系約束是比較寬松的,并不要求上層僅可以依賴于直接下層,而是上層可以依賴于它的所有下層。
    設(shè)計(jì)中我們會(huì)把各種系統(tǒng)的各種組件映射至不同層中,而在我所接觸的一些實(shí)際項(xiàng)目中設(shè)計(jì)人員在映射這種組件和層間的關(guān)系時(shí)經(jīng)常無(wú)意中破壞了層結(jié)構(gòu)的依賴關(guān)系約束。

     

    圖表 1 典型分層結(jié)構(gòu)

    設(shè)計(jì)中的常見(jiàn)問(wèn)題
    問(wèn)題一:數(shù)據(jù)傳輸對(duì)象(DTO)是否應(yīng)該屬于業(yè)務(wù)層?
    在J2EE開(kāi)發(fā)的經(jīng)典著作《Core J2EE Patterns》中數(shù)據(jù)傳輸對(duì)象被劃分在業(yè)務(wù)層模式中,那么是否數(shù)據(jù)傳輸對(duì)象應(yīng)該被映射到業(yè)務(wù)層呢?
    數(shù)據(jù)訪問(wèn)對(duì)象(DAO)在該著作中是被映射到整合層的,這樣就會(huì)出現(xiàn)一個(gè)違反層依賴約束的問(wèn)題,因?yàn)閿?shù)據(jù)訪問(wèn)對(duì)象是要依賴于數(shù)據(jù)傳輸對(duì)象的,因此下層就會(huì)出現(xiàn)對(duì)上層的依賴了。
    所以本人認(rèn)為DTO是在各層中傳輸數(shù)據(jù)的,我們可以不必強(qiáng)求的把他們映射到上述層次中,可以把他們放置在一個(gè)公共包中。
     
    問(wèn)題二:使用POJO作業(yè)務(wù)對(duì)象的輕量級(jí)架構(gòu)與上述層模型的映射
    在使用POJO的輕量級(jí)結(jié)構(gòu)中我們通常會(huì)使用持久化框架(如Hibernate/JPA)同時(shí)會(huì)在架構(gòu)中引入倉(cāng)庫(kù)對(duì)象(Repository Object),負(fù)責(zé)業(yè)務(wù)對(duì)象的獲取和保存。(注意:他的功能和DAO是有區(qū)別的,倉(cāng)庫(kù)對(duì)象中通常只應(yīng)包括業(yè)務(wù)對(duì)象的獲取和保存邏輯)。
    通常設(shè)計(jì)人員會(huì)把業(yè)務(wù)對(duì)象映射至業(yè)務(wù)層,而將倉(cāng)庫(kù)對(duì)象映射至整合層。由于倉(cāng)庫(kù)對(duì)象對(duì)于業(yè)務(wù)對(duì)象的依賴關(guān)系就會(huì)破壞依賴關(guān)系約束,所以這種映射方式顯然不正確。
    下圖是作者推薦的映射方式

     

    圖表 2 輕量級(jí)架構(gòu)參考模型

     
    可以看到業(yè)務(wù)對(duì)象和倉(cāng)庫(kù)對(duì)象都被映射至業(yè)務(wù)層,而持久化框架被映射到了整合層。
     
    總結(jié)

    因此大家在設(shè)計(jì)過(guò)程中不要僅僅將分層結(jié)構(gòu)留于形式,而要時(shí)刻注意設(shè)計(jì)是否符合這種架構(gòu)模式,這樣才能真正發(fā)揮這種架構(gòu)模式的優(yōu)勢(shì)。

     

    蔡超
    http://dev2dev.bea.com.cn/blog/chaocai/200803/architecture_16_942.html
    JavaEE 咨詢顧問(wèn)
    SCEA (1.2&5.0)
    IBM Certified Solution Designer for OOA&D UML2

    posted on 2008-03-19 21:48 超越巔峰 閱讀(1258) 評(píng)論(0)  編輯  收藏 所屬分類: Design Pattern 、Java EE

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(12)

    隨筆分類(54)

    隨筆檔案(59)

    文章分類(2)

    文章檔案(1)

    相冊(cè)

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲av无码一区二区三区四区 | 白白色免费在线视频| 最近中文字幕大全免费视频 | 亚洲精品中文字幕无码AV| 久久免费视频观看| 亚洲乱色熟女一区二区三区丝袜| 日本在线观看免费高清| 亚洲JIZZJIZZ中国少妇中文| 看全免费的一级毛片| 亚洲A∨午夜成人片精品网站| 黄页免费视频播放在线播放| 国产又黄又爽又刺激的免费网址| 久久亚洲AV成人无码国产最大| 免费观看午夜在线欧差毛片| 美女一级毛片免费观看| 伊在人亚洲香蕉精品区麻豆| 一级毛片免费在线观看网站| 亚洲愉拍99热成人精品热久久| 精选影视免费在线 | 亚洲AV无码成人精品区蜜桃| 99热免费在线观看| 亚洲AV无码久久久久网站蜜桃| 成全视频在线观看免费高清动漫视频下载| 亚洲最大的成人网| 日韩精品成人亚洲专区| jizz免费观看| 久久久久亚洲Av无码专| 青青草国产免费久久久下载| 一区二区三区在线免费 | 亚洲最大成人网色香蕉| 国产免费一区二区三区VR| 九九免费久久这里有精品23| 国产精品亚洲精品日韩已满| **一级一级毛片免费观看| 99热亚洲色精品国产88| 亚洲AV成人精品日韩一区18p| a级片在线免费看| 亚洲毛片基地4455ww| 亚洲国产人成中文幕一级二级| 国产精品免费无遮挡无码永久视频| 亚洲精品在线免费观看|