作者
eclipse
層面式
層面式是一種通用的體系模式
它有助於把一個復雜的程序分成幾個獨立的部分
層面是基於它們的功能模塊劃分
每一個層面負責一個主要的功能
Packages代表的是邏輯層
級別高的層能使用級別低的層的函數
相反則不然
級別低的層不能使用級別高的層的函數
表A顯示了一個通用的層面模式
表A
表達
顯示程序用戶界面成分和處理用戶請求
范圍
負責程序特定的邏輯通訊
數據源
有助於一些後台服務的通訊
如數據庫連接
消息處理管理等
定義合理的層面對整個程序非常的重要
因為定義良好的層將提高維護性和使用性
這正是我們早先討論到的啟發式知識的核心
當分層一個程序時
最重要的是定義層與層之間的關聯
隨後
設計packages之間的關聯也很重要
除此之外
packags關聯最好的是單向的
因為級別高的層能調用級別低的層的函數
反之不行
程序的分層的目是提高功能的多次調用
一般來說
級別低的層要比級別高的層容易調用
當頻繁使用一個層時
你可以參考一下《Java的封裝功能》這篇文章
定義良好的層面能讓其他開發人員更容易地理解和使用程序中的函數
然而
分層也要格外注意
定義過多的層面會導致程序的復雜
所以設計分層時
你必須認真考慮
分割方式
分割方式是把程序中的非中心邏輯部分從中心邏輯部分中脫離開來
與層面方式一樣
分割方式使用packages來代表邏輯關聯
表B顯示了兩個主要的分割
表 B 垂直
程序中數據交換的主要功能
包括交換過程
交換邏輯
交換規則
水平
程序中數據交換的非主要功能
包括錯誤處理
郵件服務
數據庫訪問
當識別一個分割層時
你必須注意每一個獨立的package的主要目的
每一個分割層面都能產生有意義的package
在設計packages關聯時一定要確保它們能夠提供合理的功能函數
除此之外
垂直分割層的功能函數一般都調用水平分割層的功能函數
水平分割層的功能函數可以在程序裡面或程序之間調用
關鍵之處是你如何集中使用和改變這其中的類
如果水平功能函數被多個程序調用
此時最重要的是考慮如何獨立地調用這些獨立的功能函數
聯合模式
在面向對象程序設計中
這兩種體系模式都起著關鍵的作用
除了獨立地使用層面方法和分割方式
在實際設計過程中也常常把二者混合起來
這樣就可以達到在分割中分層和分層中分割的目的
圖A演示了把兩個層面分成兩個分割的抽象關聯模型
箭頭的方向指明了可允許的關聯
Figure A
[img][/img]
總結
每一種模式都代表著一種改進的體系設計方法
這些模式強調的是程序中的packages之間的關系
這就構成了packages的啟發式知識
在體系設計中有著重要的參考意義
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27486.html