MVC 設(shè)計(jì)模式一般指 MVC 框架,M(Model)指數(shù)據(jù)模型層,V(View)指視圖層,C(Controller)指控制層。使用 MVC 的目的是將 M 和 V 的實(shí)現(xiàn)代碼分離,使同一個(gè)程序可以有不同的表現(xiàn)形式。其中,View 的定義比較清晰,就是用戶界面。 在 Web 項(xiàng)目的開發(fā)中,能夠及時(shí)、正確地響應(yīng)用戶的請求是非常重要的。用戶在網(wǎng)頁上單擊一個(gè) URL 路徑,這對 Web 服務(wù)器來說,相當(dāng)于用戶發(fā)送了一個(gè)請求。而獲取請求后如何解析用戶的輸入,并執(zhí)行相關(guān)處理邏輯,最終跳轉(zhuǎn)至正確的頁面顯示反饋結(jié)果,這些工作往往是控制層(Controller)來完成的。 在請求的過程中,用戶的信息被封裝在 User 實(shí)體類中,該實(shí)體類在 Web 項(xiàng)目中屬于數(shù)據(jù)模型層(Model)。 在請求顯示階段,跳轉(zhuǎn)的結(jié)果網(wǎng)頁就屬于視圖層(View)。 像這樣,控制層負(fù)責(zé)前臺(tái)與后臺(tái)的交互,數(shù)據(jù)模型層封裝用戶的輸入/輸出數(shù)據(jù),視圖層選擇恰當(dāng)?shù)囊晥D來顯示最終的執(zhí)行結(jié)果,這樣的層次分明的軟件開發(fā)和處理流程被稱為 MVC 模式。 在學(xué)習(xí) Servlet 及 JSP 開發(fā)時(shí),JavaBean 相當(dāng)于 Model,Servlet 相當(dāng)于 Controller,JSP 相當(dāng)于 View。 總結(jié)如下: 視圖層(View):負(fù)責(zé)格式化數(shù)據(jù)并把它們呈現(xiàn)給用戶,包括數(shù)據(jù)展示、用戶交互、數(shù)據(jù)驗(yàn)證、界面設(shè)計(jì)等功能。 控制層(Controller):負(fù)責(zé)接收并轉(zhuǎn)發(fā)請求,對請求進(jìn)行處理后,指定視圖并將響應(yīng)結(jié)果發(fā)送給客戶端。 數(shù)據(jù)模型層(Model):模型對象擁有最多的處理任務(wù),是應(yīng)用程序的主體部分,它負(fù)責(zé)數(shù)據(jù)邏輯(業(yè)務(wù)規(guī)則)的處理和實(shí)現(xiàn)數(shù)據(jù)操作(即在數(shù)據(jù)庫中存取數(shù)據(jù))。 SUN 公司推出 JSP 技術(shù)的同時(shí),也推出了兩種 Web 應(yīng)用程序的開發(fā)模式。即 JSP+JavaBean 和 Servlet+JSP+JavaBean。 JSP+JavaBean JSP+JavaBean 中 JSP 用于處理用戶請求,JavaBean 用于封裝和處理數(shù)據(jù)。該模式只有視圖和模型,一般把控制器的功能交給視圖來實(shí)現(xiàn),適合業(yè)務(wù)流程比較簡單的 Web 程序。 JSP+JavaBean 模式中 JSP 身兼數(shù)職,既要負(fù)責(zé)視圖層的數(shù)據(jù)顯示,又要負(fù)責(zé)業(yè)務(wù)流程的控制,結(jié)構(gòu)較為混亂,并且也不是我們所希望的松耦合架構(gòu)模式,所以當(dāng)業(yè)務(wù)流程復(fù)雜的時(shí)候并不推薦使用。 Servlet+JSP+JavaBean Servlet+JSP+JavaBean 中 Servlet 用于處理用戶請求,JSP 用于數(shù)據(jù)顯示,JavaBean 用于數(shù)據(jù)封裝,適合復(fù)雜的 Web 程序。 相比 JSP+JavaBean 模式來說,Servlet+JSP+JavaBean 模式將控制層單獨(dú)劃分出來負(fù)責(zé)業(yè)務(wù)流程的控制,接收請求,創(chuàng)建所需的 JavaBean 實(shí)例,并將處理后的數(shù)據(jù)返回視圖層(JSP)進(jìn)行界面數(shù)據(jù)展示。 Servlet+JSP+JavaBean 模式的結(jié)構(gòu)清晰,是一個(gè)松耦合架構(gòu)模式,一般情況下,建議使用該模式。 MVC優(yōu)缺點(diǎn)任何一件事都有利有弊,下面來了解一下 MVC 的優(yōu)缺點(diǎn)。 優(yōu)點(diǎn) 多視圖共享一個(gè)模型,大大提高了代碼的可重用性 MVC 三個(gè)模塊相互獨(dú)立,松耦合架構(gòu) 控制器提高了應(yīng)用程序的靈活性和可配置性 有利于軟件工程化管理 總之,我們通過 MVC 設(shè)計(jì)模式最終可以打造出一個(gè)松耦合+高可重用性+高可適用性的完美架構(gòu)。 缺點(diǎn) 原理復(fù)雜 增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性 視圖對模型數(shù)據(jù)的低效率訪問 MVC 并不適合小型甚至中型規(guī)模的項(xiàng)目,花費(fèi)大量時(shí)間將 MVC 應(yīng)用到規(guī)模并不是很大的應(yīng)用程序,通常得不償失,所以對于 MVC 設(shè)計(jì)模式的使用要根據(jù)具體的應(yīng)用場景來決定。 |
|