MVC開發模式
1.1 MVC模式
1.1.1 MVC模式簡介
MVC是一種架構型模式,它本身並不引入新的功能,只是用來指導我們改善應用程式的架構,使得應用的模型和檢視相分離,從而得到更好的開發和維護效率。
在MVC模式中,應用程式被劃分成了模型(Model)、檢視(View)和控制器(Controller)三個部分。其中,模型部分包含了應用程式的業務邏輯和業務資料;檢視部分封裝了應用程式的輸出形式,也就是通常所說的頁面或者是介面;而控制器部分負責協調模型和檢視,根據使用者請求來選擇要呼叫哪個模型來處理業務,以及最終由哪個檢視為使用者做出應答。
MVC模式的這三個部分的職責非常明確,而且相互分離,因此每個部分都可以獨立的改變而不影響其他部分,從而大大提高了應用的靈活性和重用性。
1.1.2 MVC模式基礎
在MVC模式中,一個應用被劃分成了模型(Model)、檢視(View)和控制器(Controller)三個部分,接下來認識一下這三個部分。
1:首先看一下模型、檢視、控制器各部分的作用
- 模型(Model):負責封裝應用的狀態,並實現應用的功能。通常又分為資料模型和業務邏輯模型,資料模型用來存放業務資料,比如訂單資訊、使用者資訊等;而業務邏輯模型包含應用的業務操作,比如訂單的新增或者修改等。
- 檢視(View):用來將模型的內容展現給使用者,使用者可以通過檢視來請求模型進行更新。檢視從模型獲得要展示的資料,然後用自己的方式展現給使用者,相當於提供介面來與使用者進行人機互動;使用者在介面上操作或者填寫完成後,會點選提交按鈕或是以其它觸發事件的方式,來向控制器發出請求。
- 控制器(Controller):用來控制應用程式的流程和處理檢視所發出的請求。當控制器接收到使用者的請求後,會將使用者的資料和模型的更新相對映,也就是呼叫模型來實現使用者請求的功能;然後控制器會選擇用於響應的檢視,把模型更新後的資料展示給使用者。
2:模型和檢視的關係
在MVC中,模型和檢視是分離的,通常檢視裡面不會有任何邏輯實現;而模型也是不依賴於檢視的,同一個模型可能會有很多種不同的展示方式,也就是同一個模型可以對應多種不同的檢視。
這種例子比比皆是,例如,在windows作業系統上瀏覽資料夾時,資料夾就那些,資料並沒有變化,但是展示方式就有多種,比如大圖示、小圖示、詳細資訊等等多種展示方式。以tomcat7資料夾下的檔案為例,按照不同的展示方式,如圖1.1所示:
圖1.1一個模型對應多個檢視
模型負責輸出的內容,而檢視負責輸出的形式,模型不依賴於檢視,模型與檢視是解耦的。因此在修改檢視,也就是顯示方式的時候,不必關心模型,而只需要直接修改檢視的展示方式即可。
3:MVC的元件關係圖
MVC的元件關係如圖1.2所示:
圖1.2 MVC元件關係圖
MVC的元件關係圖描述了模型、檢視、控制器這三個部分的互動關係,下面按照互動順序來詳細描述一下它們的互動關係:
(1)首先是展示檢視給使用者,使用者在這個檢視上進行操作,並填寫一些業務資料
(2)然後使用者會點選提交按鈕,來發出請求
(3)檢視發出的使用者請求會到達控制器,在請求中包含了想要完成什麼樣的業務功能以及相關的資料。
(4)控制器會來處理使用者請求,會把請求中的資料進行封裝,然後選擇並呼叫合適的模型,請求模型進行狀態更新,然後選擇接下來要展示給使用者的檢視。
(5)模型會去處理使用者請求的業務功能,同時進行模型狀態的維護和更新
(6)當模型狀態發生改變的時候,模型會通知相應的檢視,告訴檢視它的狀態發生了改變。
(7)檢視接到模型的通知後,會向模型進行狀態查詢,獲取需要展示的資料,然後按照檢視本身的展示方式,把這些資料展示出來。
接下來就是等待使用者下一次操作,再次從頭輪迴了。
1.1.3 MVC模式作用
在早期開發中,有一些程式設計師沒有認識到MVC模式帶來的好處,在開發的時候不遵守MVC模式。這樣做的結果就是程式結構劃分不明確,各個部分功能混亂,在業務功能發生變更時,無論是業務邏輯修改還是顯示形式修改,都要修改很多的類,“牽一髮而動全身”,導致軟體的開發和維護效率低下,錯誤百出。
而遵循MVC模式來開發系統,就會極大的避免上述問題的出現。MVC模式的核心手段是解耦,MVC模式通過仔細的劃分功能,把整個應用程式劃分成模型、檢視、控制器三個部分,然後嚴密控制三個部分之間的通訊,從而得到一個結構清晰、功能分佈合理、可重用、可擴充套件、可維護的應用程式。
因此,使用MVC模式,可以獲得以下好處:
- 低耦合性:在MVC模式中,模型和檢視是解耦的,模型不會依賴於檢視,而檢視也僅僅是從模型中獲取需要展示的資料,並不會與模型的邏輯處理相關聯。
- 更低的開發成本:由於MVC模式幫我們清楚的劃分了各部分的職責,就可以讓程式設計師各司其職,Java程式設計師只關心業務邏輯的實現,也就是模型部分;而介面程式設計師只關心頁面展示,也就是檢視部分即可。
- 更好的可維護性:MVC模式劃分出明晰的模型和檢視部分,並使其解耦,在軟體需求發生變更的時候,就可以各自獨立的改變而不會相互影響,使得程式更容易維護和擴充套件。
1.1.4 Model2模型中的MVC
在Java的Web開發中,通常把Servlet+JSP+JavaBean的模型稱為Model2模型,這是一個完全遵循MVC模式的模型,基本劃分如下:
- JavaBean作為模型,既可以作為資料模型來封裝業務資料,又可以作為業務邏輯模型來包含應用的業務操作。其中,資料模型用來儲存或傳遞業務資料,而業務邏輯模型接收到控制器傳過來的模型更新請求後,執行特定的業務邏輯處理,然後返回相應的執行結果。
- JSP作為表現層,負責提供頁面來為使用者展示資料,提供相應的表單(Form)來用於使用者的請求,並在適當的時候(比如使用者點選提交的按鈕),向控制器發出使用者請求來請求模型進行更新。
- Serlvet作為控制器,用來接收使用者提交的請求,然後獲取請求中的資料,將之轉換為業務模型需要的資料模型,然後呼叫業務模型相應的業務方法,請求模型進行更新,同時根據業務執行結果來選擇要返回的檢視,也就是選擇下一個頁面。
Model2實現MVC的基本結構圖如下圖所示:
圖1.3 Model2中的MVC
那麼,在使用者發出一個請求後,Servlet+JSP+JavaBean模型基本的響應順序是怎樣的呢?
當使用者發出一個請求後,這個請求會被控制器Servlet接收到;Servlet將請求的資料轉換成資料模型JavaBean,然後呼叫業務邏輯模型JavaBean的方法,並將業務邏輯模型返回的結果放到合適的地方,比如請求的屬性裡;最後,根據業務邏輯模型的返回結果,由控制器來選擇合適的檢視(JSP),由檢視把資料展現給使用者。
私塾線上網站原創《研磨struts2》系列
轉自請註明出處:【http://sishuok.com/forum/blogPost/list/3984.html】
歡迎訪問http://sishuok.com獲取更多內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29361362/viewspace-1069895/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 請大家談談MVC開發模式MVC模式
- 傳統的MVC開發模式和前後端分離開發模式MVC模式後端
- 使用MVC模式實現區塊鏈開發MVC模式區塊鏈
- 淺析前端開發中的 MVC/MVP/MVVM 模式前端MVCMVPMVVM模式
- ASP.Net MVC開發基礎學習筆記(1):走向MVC模式ASP.NETMVC筆記模式
- iOS開發-MVCiOSMVC
- java EE開發之Servlet第八課:MVC模式 (基本理解)JavaServletMVC模式
- MVC開發簡介MVC
- MVC模式原理MVC模式
- JavaScript 的 MVC 模式JavaScriptMVC模式
- MVC模式已死MVC模式
- 談談MVC模式MVC模式
- 傳統MVC模式MVC模式
- golang 版本的MVC開發框架GolangMVC框架
- 極簡架構模式-MVC模式架構模式MVC
- 什麼?快來開啟 MVC 的 “擴充 “模式MVC模式
- iOS 開發(二) MVC 架構篇iOSMVC架構
- Android之MVC模式AndroidMVC模式
- 【極客班】MVC模式MVC模式
- 深入淺出MVC模式MVC模式
- MVC模式和MVP模式的區別MVC模式MVP
- [ASP.NET MVC 小牛之路]01 - 理解MVC模式ASP.NETMVC模式
- dotnet core開發體驗之開始MVCMVC
- Spring MVC——專案的開發流程SpringMVC
- 學習筆記-設計模式:MVC模式筆記設計模式MVC
- [專業術語]MVC模式MVC模式
- JavaScript的MVC模式嚮導JavaScriptMVC模式
- CQRS模式要好於MVC模型模式MVC模型
- 微商複合模式系統開發(開發系統模式)模式
- 軟體開發新模式:敏捷開發模式敏捷
- [ Office 365 開發系列 ] 開發模式分析模式
- .NET/ASP.NET MVC(模組化開發AraeRegistration)ASP.NETMVC
- 前端開發模式--MV*前端模式
- 軟體開發模式模式
- Spark開發-Local模式Spark模式
- Spark開發-Standalone模式Spark模式
- 淺談MVC/MVP/MVVM模式(概述)MVCMVPMVVM模式
- 淺談前端MVC與MVVC模式前端MVC模式