對MVC的理解

來源:互聯網
上載者:User

標籤:mvc架構   blog   構造器   使用者   介面   view   調用   串連   邏輯   

MVC並不屬於GOF的23個設計模式之列,但是它在GOF的書中作為一個重要的例子被提出來,並給予了很高的評價。一般的來講,我們認為GOF的23個模式是一些中級的模式,在它下面還可以抽象出一些更為一般的底層的模式,在其上也可以通過組合得到一些進階的模式。MVC就可以看作是進行一些模式組合之後的結果。

  MVC定義:Model-View-Controller,把一個應用的輸入、處理、輸出資料流程按照ModelViewController的方式進行分離,這樣一個應用被分成三個層,即模型層、視圖層、控制層。

  MVC模式結構如下:

 

模型(Model):封裝的是資料來源和所有基於對這些資料的操作。在一個組件中,Model往往表示組件的狀態和操作狀態的方法。
視圖(View):封裝的是對資料來源Model的一種顯示。一個模型可以由多個視圖,而一個視圖理論上也可以同不同的模型關聯起來。
控制器(Control):封裝的是外界作用於模型的操作。通常,這些操作會轉寄到模型上,並調用模型中相應的一個或者多個方法。一般Controller在Model和View之間起到了溝通的作用,處理使用者在View上的輸入,並轉寄給Model。這樣Model和View兩者之間可以做到鬆散耦合,甚至可以彼此不知道對方,而由Controller串連起這兩個部分。
  MVC應用程式總是由這三個部分組成。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Model的資料或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中擷取資料來重新整理自己。MVC模式最早是smalltalk語言研究團提出的,應用於使用者互動應用程式中。

MVC的兩個分離:
  Ⅰ:View和Model分離:Model關注內在的不可視的邏輯,而View關注外在的可視的邏輯。這樣能夠為相同的Moudle開發不同的View進行展示,把可視與不可視分離開也可以使Modle相對獨立,耦合性降低,可以進行獨立測試。
  Ⅱ:View和Controller分離:這個分離的重要性不是很大,因為View和Controller往往是一一對應的關係。Controller對View是單向引用,這樣可以對Controller進行獨立測試。

   MVC的優點:

  最重要的是有多個視圖對應一個模型的能力,使的軟體的健壯性和代碼的重用性得到了很大的提高;一個應用被分離為三個層,有新的需求只需改變特定的層就可以滿足,也便於維護,有利於軟體工程化管理。

  缺點:
     

(1)增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的複雜性,使軟體的開發週期加長,並可能產生過多的更新操作,降低運行效率。
  (2)視圖與控制器間的過於緊密的串連。視圖與控制器是相互分離,但確實聯絡緊密的組件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。
  (3)視圖對模型資料的低效率訪問。依據模型操作介面的不同,視圖可能需要多次調用才能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能。
  (4) 目前,一般進階的介面工具或構造器不支援MVC架構。改造這些工具以適應MVC需要和建立分離的組件的代價是很高的,從而造成使用MVC的困難。

 

適用範圍:

將MVC運用到你的應用程式,會帶來額外的工作量,增加應用的複雜性,但對於開發存在大量使用者介面,並且商務邏輯複雜的大型應用程式,MVC將會使你的軟體在健壯性、代碼重用和結構方面上一個新的台階。儘管在最初構建MVC架構時會花費一定的工作量,但從長遠角度看,它會大大提高後期軟體開發的效率。

 

對MVC的理解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.