MVC的處理過程及優點-學習Struts 2 不得不說的架構(1)

以下內容摘自《程序天下:Struts2技術詳解(實例版):基於WebWork核心的MVC開發與實踐》 第1章

1.1.2  MVC設計模式

MVCModel-View-Controller的簡稱,即模型-視圖-控制器。MVCXerox PARC20世紀80年代爲編程語言Smalltalk-80發明的一種軟件設計模式,至今已被廣泛使用。

MVC把應用程序分成3個核心模塊:模型(Model)、視圖(View)和控制器(Controller),它們分別擔當不同的任務。如圖1.2所示顯示了這幾個模塊各自的功能及它們的相互關係。

                         

1.2  MVC結構圖

視圖:視圖是用戶看到並與之交互的界面。視圖向用戶展示用戶感興趣的業務數據,並能接收用戶的輸入數據,但是視圖並不進行任何實際的業務處理。視圖可以向模型查詢業務數據,但不能直接改變模型中的業務數據。視圖還能接收模型發出的業務數據更新事件,從而對用戶界面進行同步更新。

模型:模型是應用程序的主體部分。模型表示業務數據和業務邏輯。一個模型能爲多個視圖提供業務數據。同一個模型可以被多個視圖重用。

控制器:控制器接收用戶的輸入並調用模型和視圖去完成用戶的請求。當用戶在視圖上選擇按鈕或菜單時,控制器接收請求並調用相應的模型組件去處理請求,然後調用相應的視圖來顯示模型返回的數據。

如圖1.3所示,MVC3個模塊也可以視爲軟件的3個層次,最上層爲視圖層,中間爲控制器層,下層爲模型層。總的說來,層與層之間爲自上而下的依賴關係,下層組件爲上層組件提供服務。視圖層與控制器層依賴模型層來處理業務邏輯和提供業務數據。此外,層與層之間還存在兩處自下而上的調用,一處是控制器層調用視圖層來顯示業務數據,另一處是模型層通知客戶層同步刷新界面。爲了提高每個層的獨立性,應該使每個層對外公開接口,封裝實現細節。

                            

1.3  MVC三個模塊同軟件三層的關係

說明

MVC設計模式是目前最流行的Web應用設計模式,給項目代碼的管理和維護帶來了很大的便利。

 

1.1.3  MVC的處理過程

如圖1.4所示,用戶在視圖提供的界面上發出請求,視圖把請求轉發給控制器,控制器調用相應的模型來處理用戶請求,模型進行相應的業務邏輯處理,並返回數據。最後控制器調用相應的視圖來顯示模型返回的數據。

           

1.4  MVC處理過程

1.1.4  MVC的優點

MVC作爲一種模塊化的設計思想,具有如下優點:

多個視圖能共享一個模型。在MVC設計模式中,模型響應用戶請求並返回響應數據,視圖負責格式化數據並把它們呈現給用戶,業務邏輯和數據表示分離,同一個模型可以被不同的視圖重用,所以大大提高了模型層程序代碼的可重用性。

模型是自包含的,與控制器和視圖保持相對獨立,因此可以方便地改變應用程序的業務數據和業務規則。如果把數據庫從MySQL移植到Oracle,或者把RDBMS數據源改變成LDAP數據源,只需改變模型即可。一旦正確地實現了模型,不管業務數據來自數據庫還是LDAP服務器,視圖都會正確地顯示它們。由於MVC的三個模塊相互獨立,改變其中一個不會影響其他兩個,所以依據這種設計思想能構造良好的鬆耦合的組件。

控制器提高了應用程序的靈活性和可配置性。控制器可以用來連接不同的模型和視圖去完成用戶的需求,控制器爲構造應用程序提供了強有力的重組手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇適當的模型進行業務邏輯處理,然後選擇適當的視圖將處理結果顯示給用戶。

1.1.5  MVC的適用範圍

使用MVC需要精心的設計,由於它的內部原理比較複雜,所以需要花費一些時間去理解它。將MVC運用到應用程序中,會帶來額外的工作量,增加應用的複雜性,所以MVC不適合小型應用程序。

但對於開發存在大量用戶界面,並且業務邏輯複雜的大型應用程序,MVC將會使軟件在健壯性、代碼重用和結構方面上一個新的臺階。儘管在最初構建MVC框架時會花費一定的工作量,但從長遠角度看,它會大大提高後期軟件開發的效率。

說明

對於一些非常小的項目,或者沒有後期開發的項目,MVC的分層設計會給開發帶來額外的工作量。可以考慮不使用MVC設計。

發佈了47 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章