閱讀92 返回首頁    go 阿裏雲 go 技術社區[雲棲]


三層與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

  上一篇:go Android 不能返回 parent Activity 的問題
  下一篇:go C# 根據列名與列值設置當前行