JAVAEE企業級應用開發淺談第二輯

上海尚學堂:不積跬步無以致千里,不積小流無以成江海java

Step1.情景概要程序員

Hello,小夥伴們,昨天跟你們分享了JAVA EE 企業級應用開發中你們耳熟能詳的概念-三層架構,那麼有的小夥伴可能就會有疑問了,這種代碼書寫方式我天天寫這些web 項目時都是在採用該方式呢,那跟咱們所接觸的MVC 有啥區別呢,藉着這樣的疑問,咱們今天聊聊咱們程序員們在開發時常常提到的MVC。web

Step2.問題淺析
在開發中,咱們可能老是不經意間就將三層架構與Mvc混爲一談,卻不知它倆並非一個概念。下面我來爲你們揭曉我所理解的一些「真相」。
三層架構: 一般意義上的三層架構就是將整個業務應用劃分爲:界面層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。區分層次的目的即爲了「高內聚低耦合」的思想。
MVC:全名是Model View Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。
哈哈,看過概念感受有點暈暈的,那具體該怎麼去理解它呢?瀏覽器

Step3.迴歸代碼
在步驟二中對於三層架構與MVC 的概念性問題作了一個解釋,固然對於咱們程序員來講概念神馬都是浮雲,只有代碼纔是咱們的鐘愛,接下來咱們來具體來看看經過代碼怎麼去理解二者區別。一樣仍是藉助咱們昨天的用戶登陸場景來分析。
在沒有分層的狀況下,也沒有MVC概念的前提下,咱們想要經過服務器端給瀏覽器響應一個登陸頁面,對於java 程序員來講,咱們看到的代碼會是以下形式:
圖片描述服務器

圖片描述

而對於登陸的具體代碼處理,思路首先是這樣的:架構

結合思路,具體代碼實現,咱們看到的代碼將會是這樣的:mvc

圖片描述

參數獲取與非空處理:
Jdbc 操做 查詢用戶記錄:
圖片描述jsp

登陸結果響應到客戶端:spa

圖片描述

略略看來,這些代碼是神馬?好像回到了」原始時代」。。。設計

以上代碼實際上已經實現了一個簡單的用戶登陸功能,可是跟咱們平時所寫的代碼仍是有較大差距的,具體差距在哪呢。
分析以上代碼,對於代碼的書寫方式上第一咱們沒有采用三層架構方式對代碼進行解耦操做,帶來的問題就是servlet 中代碼至關臃腫,不放採用咱們的三層架構來對代碼進行分層處理,處理後的代碼會是下面這樣的:
Dal(Data Access Layer) 數據訪問層即咱們一般所說的Dao 層:

圖片描述

圖片描述

Bll(Business Logic Layer)業務邏輯處理層 即咱們一般所說的Service 層:

Ui(User Interface layer) 界面層 即 咱們這裏用到的jsp+servlet

圖片描述

登陸頁面:

圖片描述

登陸成功歡迎頁面:

圖片描述

至此,一個簡單的登陸功能代碼重構完畢,此時登陸的代碼看起來已經跟咱們平時所寫的功能代碼很類似,可能在業務處理上沒有項企業項目中那樣業務比較多,這裏咱們拿最簡單的爲例,思想理解了,哈哈,其它什麼業務代碼對於咱們程序員來講都是浮雲而已。

Step4 代碼分析與總結
經過以上代碼分析,咱們能夠看到,登陸功能實現中既有三層架構的處理,又有MVC 的影子,那這個該具體如何進一步理解這兩則關係呢,哈哈,事已至此,咱們來作個簡單梳理:
三層架構將整個項目劃分爲:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。
MVC 即Model(模型),View(視圖),Controller(控制)。

圖片描述
具體關係圖以下:

1.兩者都是「三層」。
雖然都是「三層」(不必定是真的三層,還能夠是多層),可是它們的劃分的不同。你們可從上面的圖中看出不一樣。
2.MVC老是伴隨着三層架構,但三層不必定伴隨Mvc

雖然說都是三層,兩則側重點仍是不一樣的, 三層架構的目的着重點是「高內聚,低耦合」,即解耦。MVC的目的則是實現Web系統的職能分工,即職責劃分。三層是基於業務邏輯來分的,而mvc是基於頁面來分的。MVC主要用於表現層,三層主要用於體系架構,三層通常是表現層、中間層、數據層,其中表現層又能夠分紅M、V、C,(Model View Controller)模型-視圖-控制器,同時對於三層架構來講,不只僅使用web 項目,對於其它形式的項目一樣是適用的。

哈哈,寫到這,相信你們對三層架構,Mvc 有了相對深入的認識,好了,今天的分享就先到這,明天咱們繼續來聊。歡迎繼續關注上海尚學堂java。

相關文章
相關標籤/搜索