模型-視圖-控制器(Model-View-Controller,MVC)是Xerox PARC在20世紀80年代爲編程語言Smalltalk-80發明的一種軟件設計模式,至今已普遍應用於用戶交互應用程序中。在iOS開發中MVC的機制被使用的淋漓盡致,充分理解iOS的MVC模式,有助於咱們程序的組織合理性。
html
模型對象
模型對象封裝了應用程序的數據,並定義操控和處理該數據的邏輯和運算。例如,模型對象多是表示遊戲中的角色或地址簿中的聯繫人。用戶在視圖層中所進行的建立或修改數據的操做,經過控制器對象傳達出去,最終會建立或更新模型對象。模型對象更改時(例如經過網絡鏈接接收到新數據),它通知控制器對象,控制器對象更新相應的視圖對象。
視圖對象
視圖對象是應用程序中用戶能夠看見的對象。視圖對象知道如何將本身繪製出來,並可能對用戶的操做做出響應。視圖對象的主要目的,就是顯示來自應用程序模型對象的數據,並使該數據可被編輯。儘管如此,在 MVC 應用程序中,視圖對象一般與模型對象分離。ios
在iOS應用程序開發中,全部的控件、窗口等都繼承自 UIView,對應MVC中的V。UIView及其子類主要負責UI的實現,而UIView所產生的事件均可以採用委託的方式,交給UIViewController實現。
控制器對象
在應用程序的一個或多個視圖對象和一個或多個模型對象之間,控制器對象充當媒介。控制器對象所以是同步管道程序,經過它,視圖對象瞭解模型對象的更改,反之亦然。控制器對象還能夠爲應用程序執行設置和協調任務,並管理其餘對象的生命週期。數據庫
控制器對象解釋在視圖對象中進行的用戶操做,並將新的或更改過的數據傳達給模型對象。模型對象更改時,一個控制器對象會將新的模型數據傳達給視圖對象,以便視圖對象能夠顯示它。編程
對於不一樣的UIView,有相應的UIViewController,對應MVC中的C。例如在iOS上經常使用的UITableView,它所對應的Controller就是UITableViewController。設計模式
有關「模型-視圖-控制器」的完整信息,請參閱 Concepts in Objective-C Programming(Objective-C 編程中的概念)中的:Model-View-Controller服務器
MVC模式的優勢網絡
1.耦合性低 app
視圖層與業務層的分離,這樣就容許更改視圖層代碼而不用從新編譯模型和控制器代碼。一樣,一個應用的業務流程或者業務規則的改變只須要改動MVC的模型層便可。由於模型與控制器和視圖相分離,因此很容易改變應用程序的數據層和業務規則。模型是自包含的,而且與控制器和視圖相分離,因此很容易改變應用程序的數據層和業務規則。若是把數據庫從MySQL移植到Oracle,或者改變基於RDBMS數據源到LDAP,只需改變模型便可。一旦正確的實現了模型,無論數據來自數據庫或是LDAP服務器,視圖將會正確的顯示他們。因爲運用MVC的應用程序的三個部件是相互獨立的,改變其中一個不會影響其餘兩個,因此依據這種設計思想能構造良好的鬆耦合的構件。編程語言
2.重用性高ui
3.生命週期成本低
4.部署快
5.可維護性高
6.有利軟件工程化管理
轉載自:http://liuzhichao.com/p/1379.html