1. 程式人生 > >碼農小汪-SPringMVC-基本的理解MVC 降低耦合性~依賴性

碼農小汪-SPringMVC-基本的理解MVC 降低耦合性~依賴性

標準 MVC 模型概述

MVC模型:是一種架構型的模式,本身不引入新功能,只是幫助我們將開發的結構組織的更加合理,使展示與模型分離、流程控制邏輯、業務邏輯呼叫與展示邏輯分離

這裡寫圖片描述

  1. Model(模型):
    資料模型,提供要展示的資料,因此包含資料和行為,可以認為是領域模型或 JavaBean 元件(包含資料和行為),不過現在一般都分離開來:Value Object(資料) 和 服務層(行為)。也就是模型提供了模型資料查詢和模型資料的狀態更新等功能,包括資料和業務。
  2. View(檢視):
    負責進行模型的展示,一般就是我們見到的使用者介面,客戶想看到的東西。
  3. Controller(控制器):
    接收使用者請求,委託給模型進行處理(狀態改變) ,處理完畢後把返回的模型資料返回給檢視,由檢視負責展示。 也就是說控制器做了個排程員的工作。

在標準的 MVC 中模型能主動推資料給檢視進行更新(觀察者設計模式,在模型上註冊檢視,當模型更新時自動更新檢視),但在 Web 開發中模型是無法主動推給檢視(無法主動更新使用者介面),因為在 Web 開發是
請求-響應模型。

Web MVC 概述

這裡寫圖片描述

在 Web MVC 模式下,模型無法主動推資料給檢視,如果使用者想要檢視更新,需要再發送一次請求(即請求-響應模型)。

在JavaEE世界裡,它可以認為就是Web MVC模型
這裡寫圖片描述

我們來看看以前的寫法吧,這個是看大神寫的,其實哈,我們學習過Struct2啦,看這個感覺就是有非常多的缺點的,所以我們還是的必須的看哈,才知道怎麼去解決這些問題的!
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

可以看出,檢視和模型分離了,控制邏輯和展示邏輯分離了!
之前的我剛開始學習jsp的時候也像這麼的做過這些事情,簡直是渣的不行啦~~那時候還覺得好厲害啊~ 我也是暈啦!

  • 這些有啥子缺點呢~~

    1. 選擇下一個檢視,嚴重依賴 Servlet API,這樣很難或基本不可能更換檢視
    2. 給檢視傳輸要展示的模型資料,使用 Servlet API,更換檢視技術也要一起更換,很麻煩
    3. 此處模型使用 JavaBean, 可能造成 JavaBean 元件類很龐大, 一般現在專案都是採用三層架構, 而不採用 JavaBean。(這個就是我們說的Dao,Service…Entity)
      這裡寫圖片描述

    4. 現在被繫結在 JSP,很難更換檢視,比如 Velocity、FreeMarker;比如我要支援 Excel、PDF 檢視等等

    5. Front Controller + Application Controller + Page Controller + Context.即,前端控制器+應用控制器+頁面控制器(也有稱其為動作)+上下文,也是 Web MVC,只是責任更加明確
      這裡寫圖片描述
      這裡寫圖片描述

乾淨的 web 表現層:

模型和檢視的分離;
控制器中的控制邏輯與功能處理分離(收集並封裝引數到模型物件、業務物件呼叫) ;
控制器中的檢視選擇與具體檢視技術分離。

輕薄的 web 表現層:

做的事情越少越好,薄薄的,不應該包含無關程式碼;
只負責收集並組織引數到模型物件,啟動業務物件的呼叫;
控制器只返回邏輯檢視名並由相應的應用控制器來選擇具體使用的檢視策略;
儘量少使用框架特定 API,保證容易測試

看到這個謝啦這麼多的文字,確實很深入的理解啦~很不錯哦