三層與Entity
在學習三層的過程中,有一個問題讓我很鬱悶,就是為什麼偏偏是三層,而不是二層或者四層,查閱了資料知道,不是二層是因為那樣就會出現高度耦合的問題,而不是四層是因為實體類(Entity),它僅僅可以用作一種方法,沒有它係統照樣可以工作,有了它可以更加方便工作。
下麵先來用一個生活中的例子來理解一下:
UI層(淘寶):日常生活中我們會在淘寶上買東西,我們需要什麼東西,就會加入購物車,這個時候就將所需的數據傳給了B層,也就是形成了訂單。這一層來接受B層的訂單詳情,也就是用戶通過淘寶網知道自己買的東西到了哪裏。這就是界麵層。
B層(訂單):客戶將數據提交後,在訂單中進行處理,判斷,如是否有該商品,是否有少填東西,所有都堅持無誤後,將數據傳給D層,即商家。D層將發貨信息傳遞給該層。這就是業務邏輯層。
D層(商家):商家接受到有B層傳來的數據後,開始在自己的商店中找對應所需要的物品,找到後開始進行發貨,同時將物流信息返回到B層,即我們熟知的訂單詳情。這就是數據訪問層。
Entity(實體類):它不屬於任何一層,也可以叫做公共層(“大眾情人”),上麵的三層都需要用到這個類,它用於在各個層之間進行數據的傳遞。
那麼為什麼要用實體類呢?
實體類,即數據表的映射,數據庫中DatsSet 不具備OO的優點, 實現數據檢索繁瑣,易出錯, 使數據結構暴露在業務邏輯層和表現層,因此使用實體類在各個層之間進行傳遞,它符合麵向對象的抽象封裝思想,如果程序需要改動,隻需要改動實體類,方法間調用接口,符合麵向對象接口不變。
那麼應用三層有什麼作用呢?它的優缺點是什麼?
三層的作用:符合“高內聚,低耦合”的思想,但不是處處都要想三層,有時候一個簡單的係統用了三層往往會使問題複雜化。
優點:
1、開發人員可以隻關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利於標準化;
5、利於各層邏輯的複用。
缺點:
1、降低了係統的性能。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據。
2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。
最後更新:2017-04-03 12:55:39
上一篇:
Android 不能返回 parent Activity 的問題
下一篇:
C# 根據列名與列值設置當前行
一個Java 8中簡單Lambda表達式程序
Android狀態欄定製和狀態欄圖片順序修改
《人生的智慧》第二章 人的自身
error: ‘exit’ was not declared in this scope 的解決方法
運維人員注意啦:NetSarang的Xmanager和Xshell多種產品被植入後門
MyEclipse中add jars和add external jars的區別帶來的svn checkout的問題
演講實錄丨李德毅 ADAS的繁榮與轉型
APP深度性能測試&性能提升實踐
使用 JavaScript 分析用戶訪問行為數據
並不是所有的備份都可以防止“永恒之藍”,除了和力記易!