三層架構之實體層以及外觀

2021-06-04 13:19:42 字數 1717 閱讀 3317

昨天,七期師兄師姐們給我們講解了一下三層和三正規化。

關於三層:

對於三層的理解,一直在一步步的加深之中,不論理解的對與錯,至少現在和別人說三層,能說出一點點的皮毛,但是再往深一點說,就不會了。

聽了昨天的講解,發現最難理解的其實並不是b層,也不是d層,更不是u層,而是實體層。

bll層主管業務邏輯,也就是說和業務有關的放在b層。u層是表現層,主管和使用者的互動,使用者輸入,以及向使用者展示都是u層的事。d層為資料訪問層,主管和資料庫打交道。

前些日子看了篇關於三層的文章,在他的文章裡說驗證是否為空等一系列放在b層。關於這個,仁者見仁,智者見智。有人認為只要涉及到判斷,那麼就應該放在b層,也有人認為,這個是與介面相關的,所以放在u層。

放在b層的好處是什麼呢?那就是u層的**可以再少一點,在更換介面層的時候,新的u層只需要傳值即可,這樣的話b層就會變的特別臃腫。我感覺著也就是大家都說b層是最麻煩的原因了。

我個人感覺最難理解的是實體層,這一層是「跳出三界外,不在五行中」。它不屬於三層中的任何一層,但是三層每一層都與他關聯。最初的理解是有多少個表,就最少有多少個實體類,每個實體類的屬性為表的字段。

慢慢的,覺得這樣劃分實體類是有問題的,因為涉及到多個表的時候,那麼就返回不了實體類了,因而出現了基於檢視建立實體類。巨集哥的一句話更是點醒夢中人:其實你都可以將九個表的字段全部寫到乙個實體類裡面。

雖然大家都不會這樣做,但是這個思想告訴我們,實體類並不是規定死的,他可以完全按照你的需要進行改造,怎麼用更符合物件導向,就怎麼用,沒有那麼多的條條框框。這也就是他「跳出三界外,不在五行中」的原因吧。

而面對返回datatable,u或b層需要知道欄位的問題,則是在實體層寫乙個引數為datatable型別的方法,那麼了解欄位的責任就交給了實體層,這樣,就做到了u、b層與d層的解耦。

我們畫圖的時候,有的人加了外觀,昨天師姐問我們是否想過這些細粒度的包怎樣對應粗粒度的包,這個其實並不太難,所以就不說了。下面附圖再解釋下個人對外觀的理解吧(上篇中已**字敘述了對外觀的理解——機房收費系統總結之圖情結):

這次的舉例為上下機例項,首先我們看一下外觀帶邏輯的圖:

在這個圖里,b層是基於u層寫的,但是在b層差不多之進行了return類似的語句,相應的判斷幾乎沒有,這些工作都交給了外觀層來解決。外觀是用來解耦的,這樣其實並沒有達到解耦的目的,昨天開會的時候,勇哥說解耦最好的方法就是介面,而這裡外觀提供的並不是乙個介面,而是類似於b層的乙個類。用了外觀,就好像把b層架空了一樣,跟外觀層直接呼叫資料訪問層的感覺差不多。

下面在看下外觀沒有邏輯的圖:

(上圖中在b層省去了其他的關聯關係)由於檢測卡號是否存在以及檢查是否正在上機要重複使用,那麼在b層將其抽象出來以達到復用的目的。在這裡,相應的邏輯都存在於b層之中,b層做了自己應該做的,並沒有交給外觀,所以個人感覺雖然說可以將細粒度的包和粗粒度的包對應,但是是有區別的。

下面再說下外觀存在的意義,如果沒有外觀,那麼將會是下面的圖:

這樣,u層需要知道b層的就太多了,耦合性太高。我們的系統簡單,乙個上機窗體裡面就兩個主要功能,但是乙個窗體上面內容多的話,那u層和b層的對應關係不是很亂了麼?這時外觀就出動了。

在應用外觀時,我們不能將b層應該做的放到外觀做,就好比你d層的**寫到傳參等一切都繼續了,就差cmd的execute,然後你返回乙個cmd,讓他在b層execute吧(可能不恰當,但是道理是相同的)。

對於設計模式的理解,任重而道遠,在自己的機房收費系統裡面所用的設計模式,除了抽象工廠加反射利於更換資料庫外,其他的功能感覺都有點牽強。

下回說一下機房收費系統所用的設計模式。

c mysql三層架構例項 三層架構例項

一 概要 這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。二 demo 1 實現語言 vb.net 2 需求 學校機房收費系統 中的乙個功能 操作員為學...

疑惑之實體層

我們在進行機房收費系統時,已經接觸到三層及一些例項,但是三層到底是什麼?我理解的三層是 ui 介面 bll 邏輯層 dal 資料層。但是在做例項時有乙個實體層 entity 實體層 這就是我疑問的開始,為什麼我們不叫做四層呢?實體層在三層中的作用是什麼呢?帶著這些疑問開始自己的學習之旅!各方高見 1...

三層和實體層的區別

一 三層是指哪三層?每層的作用是什麼?1 表現層 ui 通俗講就是展現給使用者的介面,即使用者在使用乙個系統的時候他的所見所得。2 業務邏輯層 bll 針對具體問題的操作,也可以說是對資料層的操作,對資料業務邏輯處理。3 資料訪問層 dal 負責直接運算元據庫,針對資料的增添 刪除 修改 查詢等。二...