MVC 淺談

來源:互聯網
上載者:User

        只要接觸MVC就勢必離不開說三層,很多人就會一直糾結於他們之間的區別,也難怪,他們之間有共同之處:都分為三塊,不仔細琢磨好像說的都是一樣的東西,網上說法也是百家爭鳴。本文僅是介紹一下對MVC的理解,由於學習是一個逐步深入的過程,現在還未到深刻理解的程度,也沒必要非得區分出一個所以然來,也不敢對三層和MVC妄下評論,僅是記錄這個學習認知的過程,希望和大家一同交流,隨著時間的推移,自己的認識也在不斷的重新整理。

                                                      ========切入正題========


        MVC模式(Model-View-Controller)由Trygve Reenskaug在1974年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體設計模式。MVC模式的目的是實現一種動態程式設計,使後續對程式的修改和擴充簡化,並且使程式某一部分的重複利用成為可能。除此之外,此模式通過對複雜度的簡化,使程式結構更加直觀。
        MVC的設計思想是即一個應用的輸入、處理、輸出資料流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。

       

       各個層的功能:

模型(Model):主要負責出來商務邏輯以及資料庫的互動。用於封裝與應用程式的商務邏輯相關的資料以及對資料的處理方法。“模型”有對資料直接存取的權力,例如對資料庫的訪問。
視圖(View):主要用於顯示資料和提交資料。視圖層能夠實現資料有目的的顯示。在視圖中一般沒有程式上的邏輯。
控制器(Controller):主要是用作捕獲請求並控制請求轉寄。起到不同層面間的組織作用,用於控制應用程式的流程。它處理事件並作出響應。“事件”包括使用者的行為和資料模型上的改變。

      三者之間的關係:

    


        Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的資料或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中擷取資料來重新整理自己。

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

        MVC的發展:
        我們平時最常說的是最早提出的MVC模式,也稱為Classic MVC,具體演化參考(MVC演化曆史),不再贅述。

        

        MVC的優點:

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

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