1. 程式人生 > >MVC思想概述

MVC思想概述

兩種 組件 復制 mod 之間 手寫 復雜 web應用 用戶

一. 傳統Model1和Model2

Model1:整個web應用幾乎全部用JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理後直接作出響應。用少量的javaBean來處理數據庫鏈接,數據庫訪問等操作

實現比較簡單,適用於快速開發小規模項目。JSP頁面身兼View和Controller兩種角色,將控制邏輯和表現邏輯混雜在一起,從而導致代碼的重用性非常低,增加了應用擴展和維護的難度。

Model2: 基於MVC架構的設計模式,Servlet作為前端控制器,負責接收客戶端發出的請求。在Servlet中只包含控制邏輯和簡單的前端邏輯。然後,調用後端javaBean來完成實際的邏輯處理;最後,將其轉發到相應的JSP頁面來處理顯示邏輯。

JSP不再承擔控制器責任,它僅僅是表現層角色,僅僅用於將結果呈現給用戶。JSP頁面的請求與Servlet交互,而Servlet負責與後臺的javaBean通信。

M(Model)————javaBean

V(View)————JSP

C(Controller)————Servlet

具有組件化的特點,更適用於大規模應用的開發,但也增加了應用開發的復雜程度。原本需要一個簡單的JSP頁面就能實現的應用,在Model2中被分解成多個協同工作的部分。

從某種程度上講,Model2為了降低系統後期維護的復雜度,而導致前端開發的高復雜度。

二. MVC思想及其優勢

MVC是所有面向對象程序設計語言都應該遵守的規範

三個基本部分:Model(模型),View(視圖),Controller(控制器),這三個部分以最少的耦合協同工作,從而提高應用的可擴展性和可維護性。

特點:
多個視圖可以對應一個模型,可以減少代碼的復制及代碼的維護量 。一旦模型發生變化,也易於維護
模型返回的數據和顯示邏輯分離,模型數據可以應用任何的顯示技術(JSP頁面,Velocity模板,Excel文檔等)
應用被分為三層,降低了各層之間的耦合,提供了應用的可擴展性
控制層的概念也很有效,把不同的模型和視圖組合在一起,完成不同的請求,包含用戶請求權限的概念
MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,通過工程化和工具化的方法產生管理程序代碼

早期的MVC思想:對於一個普通應用程序,將視圖註冊給模型,當模型數據發生改變時,即時通知視圖頁面發送改變

Web模式下的MVC思想:即使將多個JSP頁面註冊給一個模型,但當模型發生變化時,模型也無法主動給JSP頁面發送消息(因為Web應用都是基於請求/響應模式的),只有當用戶請求瀏覽該頁面時,控制器才負責調用模型數據來更新JSP頁面。

註解:

1.JavaBean:Java語言欠缺屬性、事件、多重繼承功能。所以,如果要在Java程序中實現一些面向對象編程的常見需求,只能手寫大量膠水代碼。Java Bean正是編寫這套膠水代碼的慣用模式或約定。這些約定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述約定的類可以用於若幹工具或庫。

2.耦合和內聚介紹:耦合性是編程中的一個判斷代碼模塊構成質量的屬性,不影響已有功能,但影響未來拓展,與之對應的是內聚性。

耦合性:也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決於模塊間接口的復雜性、調用的方式及傳遞的信息。

內聚性:又稱塊內聯系。指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。若一個模塊內各元素(語名之間、程序段之間)聯系的越緊密,則它的內聚性就越高。

因此,現代程序講究高內聚低耦合,即將功能內聚在同一模塊,模塊與模塊間盡可能獨立,互相依賴低。沒有絕對沒有耦合的模塊組,只有盡量降低互相之間的影響。使模塊越獨立越好。

MVC思想概述