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

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

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

    posts - 167,  comments - 30,  trackbacks - 0

    J2EE分層設計是Java企業應用的最基本的設計思想。

    從最常規的分層結構來說,系統層次從上到下依次為:

    表現層:主要是客戶端的展示。

    服務層:直接為客戶端提供的服務或功能。也是系統所能對外提供的功能。

    領域層:系統內的領域活動。

    DAO層:數據訪問對象,通過領域實體對象來操作數據庫。

    其中有些指導原則:

    1、上層總是依賴其下層,依賴關系不跨層。

    2、表現成除外,同一層之間方法不允許相互調用。這是實際開發中一些開發者容易范的錯誤!如果真是同一層之間存在方法調用,需要注意,這些調用都是一些上層不可見方法,比如一些工具方法等。

    3、一切從服務層出發,從系統需要提供的功能進行分析,確定Service接口中的方法。而不是從數據庫的表出發,創建DAO,再創Domain,然后Service,這實際上是對系統分層的誤解。

    4、系統最核心的設計就是將系統中的實體劃分為領域模型。在此基礎上設計數據的DAO層,并將這些活動暴露給服務層,服務層的實現依賴于領域活動。

    5、每個接口的職責范圍明確有界。

    在我所做的系統中,常常看到一些糟糕的編碼:系統設計從表開始,一個表對應一個DAO,一個DAO對應一個domain,一個Domain對應一個Service,實際上Service的接口和DAO的接口基本上完全一樣!導致Service的接口方法超多!到了表現層,前臺程序員在寫Action的時候,Action中反復的調用Service方法,代碼不堪入目。

    正確的設計應該是,一個領域活動會聚合對應一個或一組DAO,來完成一個領域活動。而一個服務可能包含兩個領域活動,比如一個轉賬的業務,對應兩個領域活動。兩個帳戶的金額分別發生變化,需要操作一組領域活動,而每個活動需要操作很多表(調用多個DAO)。 事務的控制我們可以放到Service層。

    目前,越來越多的架構師喜歡領域模型驅動設計,針對系統的領域模型建模,然后上層直接是Service,Service下面就是領域活動層Activity,從而去掉了DAO層,這樣做的優點是系統設計思路更清晰,目標更明確。可以避免上面所說的一個表對應一個DAO、Service的情況。

    但缺點是當領域活動發生變化的時候,會引起領域活動層代碼的變化。并且,當要更換持久化框架或者技術時候,領域活動要重新實現。

    但綜合考慮起來,這樣帶來的優點也很多,而實際上更換數據庫和持久化框架的情況很少,因此這樣的設計也是有其合理性一面的。這樣做實際上是將原來的DAO和Domain層合并為一個Activity.但上層的設計思路還是一致的。

    其實Service層的設計也很講究,其中就是要控制Service的數量,從Service層往下,接口數量逐層增加。通常將一個模塊的服務都集中到一個Service中來處理。

    每層中的每個接口都應該關注的是自己的那一塊,而不是吃著碗里看著鍋里,牛槽伸出個狗舌頭,最典型的例子就是一個DAO中胡亂操作別的表。這種凌亂的實現只會置項目經理與死地。也會為軟件的維護帶來很大代價。

    筆者曾遇到這樣的團隊,缺乏對整個項目的整體設計,一個表一個DAO,對應一個Service,系統也不大,三四十張表,但是性能相當地下,經常down機。

    最終發現,失敗不是開源框架和數據庫以及應用服務器和硬件配置的錯,根源在于拙劣的設計導致。

    posted on 2008-09-07 11:08 David1228 閱讀(169) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關

    Spring相關

    云計算/Linux/虛擬化技術/

    友情博客

    多線程并發編程

    開源技術

    持久層技術相關

    搜索

    •  

    積分與排名

    • 積分 - 358627
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲另类少妇17p| 亚洲免费电影网站| 国产精品免费一区二区三区四区| 亚洲国产成人久久综合碰碰动漫3d | 国产乱子伦精品免费无码专区| 亚洲欧洲专线一区| 亚洲人成精品久久久久| 成人免费黄色网址| 久香草视频在线观看免费| 亚洲视频国产精品| 亚洲av成人一区二区三区在线观看| 很黄很污的网站免费| 亚洲欧美一区二区三区日产| 亚洲国产另类久久久精品黑人| 丁香花免费完整高清观看| 好猛好深好爽好硬免费视频| 亚洲中文字幕乱码一区| 亚洲av最新在线网址| 亚洲国产综合精品中文字幕| 亚洲一级免费毛片| 色www永久免费| 亚洲国产成人综合精品| 亚洲一区影音先锋色资源| 婷婷亚洲天堂影院| 日韩av无码成人无码免费| 日批视频网址免费观看| 豆国产96在线|亚洲| 亚洲国产精品免费在线观看| 国产亚洲美女精品久久久2020| 成人午夜性A级毛片免费| 免费国产污网站在线观看15| 免费人成再在线观看网站| 天堂亚洲国产中文在线| 亚洲一区二区影院| 国产亚洲一区二区在线观看| 免费a级毛片永久免费| 永久免费无码网站在线观看 | 成人免费777777| 美丽的姑娘免费观看在线播放| 大妹子影视剧在线观看全集免费 | 亚洲国产精品久久久久婷婷软件|