MVC與三層架構的關系


  MVC和三層架構,是不一樣的。

相同點:分層,解耦!

他們相同的設計理念就是:把視圖設計與數據持久化進行分離,從而降低耦合性,易於擴展,提高團隊開發效率。

不同點:三層是基於業務邏輯來分的,而mvc是基於頁面來分的。

MVC模式是一種復合設計模式,一種解決方案
三層是種軟件架構,通過接口實現編程
三層模式是體系結構模式,MVC是設計模式
三層模式又可歸於部署模式,MVC可歸於表示模式

  三層是從整個應用程序架構的角度來分的三層(如果程序需要,還可以分多層)。

三層是為了解決整個應用程序中各個業務操作過程中不同階段的代碼封裝的問題,為了使程序員更加專注的處理某階段的業務邏輯。

比如將數據庫操作代碼封裝到一層中,提供一些方法根據參數直接返回用戶需要的相應數據,這樣在處理具體的業務邏輯的時候,就不用關心數據的存儲問題了。

  MVC是在應用程序(BS結構)的視圖層划分出來的不同功能的幾個模塊。

MVC主要是為了解決應用程序用戶界面的樣式替換問題,把展示數據的 HTML 頁面盡可能的和業務代碼分離。MVC把純凈的界面展示邏輯(用戶界面)獨立到一些文件中(Views),把一些和用戶交互的程序邏輯(Controller)單獨放在一些文件中,在 Views 和 Controller 中傳遞數據使用一些專門封裝數據的實體對象,這些對象,統稱為Models。

只所以說MVC和三層毫無關系,是因為它們二者使用范圍不同:三層可以應用於任何語言、任何技術的應用程序;而MVC只是為了解決BS應用程序視圖層各部分的耦合關系。它們互不沖突,可以同時存在,也可根據情況使用其中一種。


  三層架構中,DAL、BLL、WEB層各司其職,意在職責分離。
  MVC是 Model-View-Controller,嚴格說這三個加起來以后才是三層架構中的WEB層,也就是說,MVC把三層架構中的WEB層再度進行了分化,分成了控制器、視圖、實體三個部分,
控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。

 

其實它們相同的地方在於他們都有一個表現層。

 

但是他們不同的地方在於其他的兩個層。

 

首先先解釋一下MVC。V即View.是視圖的意思。C即Controler.是控制器的意思。而M即Model,是模型的意思。這三個里.最不容易理解的應該是Model.就是什么是Model,而為什么叫Model。我先不說為什么叫Model,先解釋Controler。

 

Controller是控制器的意思,所謂控制器,就是將用戶請求轉發給模型層,經過處理后把結果返回到界面展現的一個中間層,那么Controler到底管什么工作呢?先不說.先來看下在Java Web中這三個層一般的定義,一般在Java Web里,JSP充當V,Servlet充當C,JavaBean充當M,這里的Servlet管什么工作呢?接受輸入,轉到Model層去處理,處理結果保存后轉發到JSP,然后展現數據。所以它的功能就是控制器的基本功能,它就管轉發,在V和M之間轉來轉去。

再來說說M,即Model,在Java Web里說的是JavaBean,我認識的很多人都把JavaBean誤認為是實體類,其實JavaBean有比實體類更豐富的定義,在JavaBean中除了其屬性和字段,還可以有行為及其事件,JavaBean可以理解為普通Java對象。Java普通對象,就是符合Java規范的所有對象,這和實體類完全是兩回事。所以,我認為在MVC中。業務邏輯和數據訪問應該放在Model層,也就是V負責展示數據,Controler除了轉發不做業務邏輯。真正的邏輯事務,數據訪問,甚至算法都放到Model去。

在三層架構中沒有定義Controller的概念。這是我認為最不同的地方。而MVC也沒有把業務的邏輯訪問看成兩個層,這是采用三層架構或MVC搭建程序最主要的區別。當然了。在三層中也提到了Model,但是三層架構中Model的概念與MVC中Model的概念是不一樣的,“三層”中典型的Model層是以實體類構成的,而MVC里,則是由業務邏輯與訪問數據組成的。

Java中的MVC:M就是model層,V就是view ,C就是controller。

1.如果不用框架,只用servlet,那么controller就是我們自己寫的servlet代碼,然后view就是jsp代碼,model通常就是一個javaBean, 在service和dao層來回攜帶數據;上面就是mvc;三層指的是action(controller)  層,service層 dao三層;   

2.如果用框架struts,spring mvc,那么controller就是框架部分,我們通常寫的是model模型部分,用它調用service層,view還是jsp。下面是兩張圖,希望你好好理解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM