亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4255 | 回復(fù): 1
打印 上一主題 下一主題

架構(gòu)更新 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-02-09 14:47 |只看該作者 |倒序瀏覽
這個帖子聊聊我們最近開發(fā)項目的技術(shù)架構(gòu),希望大家多提寶貴意見。

【總的思想】
1、以業(yè)務(wù)層(領(lǐng)域模型)為核心
2、高內(nèi)聚、低耦合

【特點】
1、將DAO接口置于業(yè)務(wù)層;
2、在數(shù)據(jù)訪問層實現(xiàn)DAO接口,PO服務(wù)于DAO接口

【分層】
顯示層-業(yè)務(wù)層-數(shù)據(jù)訪問層(下面簡稱數(shù)據(jù)層)
業(yè)務(wù)層:細(xì)分為事務(wù)層-操作層-實體層-DAO接口,DAO接口進一步分為讀接口和寫接口
數(shù)據(jù)層:DAO實現(xiàn)+PO
顯示層:這個比較簡單,用MVC框架,然后調(diào)用業(yè)務(wù)層即可

【業(yè)務(wù)層與數(shù)據(jù)層的關(guān)系】
數(shù)據(jù)層服務(wù)于業(yè)務(wù)層,業(yè)務(wù)層定義數(shù)據(jù)訪問的接口(DAO接口),數(shù)據(jù)層來實現(xiàn),數(shù)據(jù)層的PO是為了持久化的目的設(shè)計的,這也是PO唯一的存在價值,PO不屬于業(yè)務(wù)層范疇,不具備反映業(yè)務(wù)邏輯的職責(zé),它的活動范圍被嚴(yán)格限制在數(shù)據(jù)層之內(nèi),換句話說,無論是業(yè)務(wù)層還是顯示層都不能引用PO。

是否設(shè)計PO與所使用的持久化技術(shù)有關(guān),如果業(yè)務(wù)實體能夠直接拿來持久化,而且性能沒有問題,那么就不需要單獨設(shè)計PO。總之PO屬于數(shù)據(jù)層的實現(xiàn)細(xì)節(jié),業(yè)務(wù)層的設(shè)計可以不考慮PO的任何問題,只管提DAO接口就是了。當(dāng)然DAO接口只能用業(yè)務(wù)實體做參數(shù),而不能有PO。

【業(yè)務(wù)層的設(shè)計原則】
事務(wù)層:包含事務(wù)的業(yè)務(wù)邏輯。必須定義接口。如果用Spring,則在此層綁定事務(wù)
操作層:不包含事務(wù)的業(yè)務(wù)邏輯。必須定義接口
實體層:包含簡單的、操作自身和聚合邊界內(nèi)其它實體的業(yè)務(wù)邏輯。接口定義不是必須的?勺兊、不穩(wěn)定的業(yè)務(wù)邏輯通過在操作層、事務(wù)層應(yīng)用策略模式等方式解決。
DAO接口:接口的語義僅限于反映實體的持久化操作,比如create、update、delete、findByXXX,DAO接口不能帶有業(yè)務(wù)語義。不遵守這個原則會造成業(yè)務(wù)邏輯與數(shù)據(jù)邏輯的混淆,不符合高內(nèi)聚的最高原則

【依賴關(guān)系】
總的依賴方向:顯示層->業(yè)務(wù)層<-數(shù)據(jù)層
顯示層可以引用:事務(wù)層、操作層、實體層和讀的DAO接口,不可以引用寫的DAO接口
事務(wù)層可以引用:事務(wù)層、操作層、實體層和讀寫的DAO接口
操作層可以引用:操作層、讀的DAO接口和實體層
實體層不可以引用其它任何層的接口,包括DAO,實體的操作限于其聚合邊界內(nèi)

顯示層還有一個有趣的技術(shù)就是,用Struts的話,將業(yè)務(wù)實體直接放到FormBean里面作為它的一個JavaBean屬性,而不是根據(jù)頁面定義一大堆String屬性,頁面通過x.x.x訪問對象圖的方式綁定數(shù)據(jù),這樣可以大大簡化顯示層的開發(fā)。(可能很多人都是這么用的,只是我們才剛剛醒悟過來)。至于有人提出的業(yè)務(wù)層一變,顯示層會跟著變的問題,這就看你想讓誰依賴誰了,你總要確定一個依賴方向,不可能誰也不依賴誰(變通的辦法是再加一層,然后都依賴它,如果你愿意的話……),最開始就講了,架構(gòu)總的原則是以業(yè)務(wù)層為核心,這就決定了其它層都必定是依賴與業(yè)務(wù)層的,我實在是想不出為什么不能依賴業(yè)務(wù)層。

關(guān)于Service,我不太喜歡這個概念(還有Facade),它真的能起到應(yīng)有的作用嗎?它究竟是讓接口變簡單了呢還是增加了系統(tǒng)整體的復(fù)雜程度?jdk那么復(fù)雜,也沒什么Service層啊!我們用jdk或者Hibernate的時候就看它的api和reference,那么顯示層用業(yè)務(wù)層的時候,也去看業(yè)務(wù)層的api和reference不結(jié)了?


轉(zhuǎn):http://www.javaeye.com/topic/11474

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [報告]
發(fā)表于 2011-02-10 09:05 |只看該作者
感覺這個架構(gòu)設(shè)計描述得很模糊
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP