MVC設(shè)計模式個人簡述

  • 模型-視圖-控制器(Model-View-Controller,MVC)是Xerox PARC在20世紀80年代為編程語言Smalltalk-80發(fā)明的一種軟件設(shè)計模式,至今已廣泛應(yīng)用于用戶交互應(yīng)用程序中。在iOS開發(fā)中MVC的機制被使用的淋漓盡致,充分理解iOS的MVC模式,有助于我們程序的組織合理性。
示意圖

模型對象---M

模型對象封裝了應(yīng)用程序的數(shù)據(jù),并定義操控和處理該數(shù)據(jù)的邏輯和運算。例如,模型對象可能是表示游戲中的角色或地址簿中的聯(lián)系人。用戶在視圖層中所進行的創(chuàng)建或修改數(shù)據(jù)的操作,通過控制器對象傳達出去,最終會創(chuàng)建或更新模型對象。模型對象更改時(例如通過網(wǎng)絡(luò)連接接收到新數(shù)據(jù)),它通知控制器對象,控制器對象更新相應(yīng)的視圖對象。

視圖對象---V

1.視圖對象是應(yīng)用程序中用戶可以看見的對象。視圖對象知道如何將自己繪制出來,并可能對用戶的操作作出響應(yīng)。視圖對象的主要目的,就是顯示來自應(yīng)用程序模型對象的數(shù)據(jù),并使該數(shù)據(jù)可被編輯。盡管如此,在 MVC 應(yīng)用程序中,視圖對象通常與模型對象分離。
2.在iOS應(yīng)用程序開發(fā)中,所有的控件、窗口等都繼承自 UIView,對應(yīng)MVC中的V。UIView及其子類主要負責(zé)UI的實現(xiàn),而UIView所產(chǎn)生的事件都可以采用委托的方式,交給UIViewController實現(xiàn)

控制器對象---C

1.在應(yīng)用程序的一個或多個視圖對象和一個或多個模型對象之間,控制器對象充當媒介??刂破鲗ο笠虼耸峭焦艿莱绦颍ㄟ^它,視圖對象了解模型對象的更改,反之亦然。控制器對象還可以為應(yīng)用程序執(zhí)行設(shè)置和協(xié)調(diào)任務(wù),并管理其他對象的生命周期。
2.控制器對象解釋在視圖對象中進行的用戶操作,并將新的或更改過的數(shù)據(jù)傳達給模型對象。模型對象更改時,一個控制器對象會將新的模型數(shù)據(jù)傳達給視圖對象,以便視圖對象可以顯示它。
3.對于不同的UIView,有相應(yīng)的UIViewController,對應(yīng)MVC中的C。例如在iOS上常用的UITableView,它所對應(yīng)的Controller就是UITableViewController。

MVC之間的通信

Model和View永遠不能相互通信,只能通過Controller傳遞。
Controller可以直接與Model對話(讀寫調(diào)用Model),Model通過Notification和KVO機制與Controller間接通信。
Controller可以直接與View對話,通過outlet,直接操作View,outlet直接對應(yīng)到View中的控件,View通過action向Controller報告事件的發(fā)生(如用戶Touch我了)。Controller是View的直接數(shù)據(jù)源(數(shù)據(jù)很可能是Controller從Model中取得并經(jīng)過加工了)。Controller是View的代理(delegate),以同步View與Controller。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容