MVC -設計模式之王

Model View Controller 是Cocoa的基石之一,且毫無疑問的是所有設計模式中最常用的設計模式,它根據(jù)你的應用中的一般角色去分類對象,鼓勵在完全分離的模式下分角色。
Model:這個對象hold住你的應用數(shù)據(jù),且定義如何去操作它,例如本例中就是Album類。
View:這個對象掌管了Model的可視化顯示,和控制用戶的交互,基本上所有的都是UIView和它的子類。在本例中這個就是被分離成的AlbumView類。
Controller:控制器是調(diào)節(jié)所有工作的調(diào)節(jié)器,它訪問模型中的數(shù)據(jù),然后用視圖去顯示它,根據(jù)要求監(jiān)聽事件和操作數(shù)據(jù)。你能想象在這個哪個是Controller么,就是ViewController.
視圖和模型通過控制器去交流的場景可以被描述成以下圖:
如果在Model中有任何數(shù)據(jù)變化,那么它就會通知Controller,反過來,Controller更新在View中的數(shù)據(jù),View可以通知Controller關于用戶的行為,然后Controller要么根據(jù)需要或者檢索要求的數(shù)據(jù)去更新Model。
你也許會懷疑為什么不只是創(chuàng)建了Controller然后將View和Model一起放到里面去實現(xiàn)?那樣看起來不是更容易么?
這所有的所有都是為了是代碼分離化和提高可重用性。理想情況下,視圖應該會從Model中完全分離出來,如果視圖不依賴于某個具體的Model的實現(xiàn)部分,那么它可以用不同的Model去展示其他一些數(shù)據(jù)來實現(xiàn)它的可重用性。
例如:如果將來你想添加一些電影和書籍到你的庫中去,你仍然可以使用相同的AlbumView去展示你的電影和書籍的對象,更進一步說,如果你想去創(chuàng)建一個工程去處理專輯,你可以很簡單的去重用你的Album類,因為它不依賴于任何一個視圖。這就是MVC的魔力。
首先,你需要確保你的工程中的每一個類都是Controller,或者View,或者Model,不要講任何兩個中的角色的任務連接在一塊,通過創(chuàng)建Album和AlbumV類你已經(jīng)做了一個很好的工作。
其次,為了確保遵守這個工作方法,你應該創(chuàng)建三個工程組去hold住你的代碼,每類一個分組。
按住Command+option+N鍵,創(chuàng)建一個組,名為Model,同樣創(chuàng)建View和Controller,將Album.h和Album.m拖入Model中,拖動AlbumView.h和AlbumView.m的視圖組,最后拖ViewController.h和ViewController.m到控制器組.
這時候你的工程結構應該看起來是這樣的:
現(xiàn)在看起來沒有那些文件浮在四周,看著好多了。顯然你可以有其他的組和類,但是這個應用中的核心就是包含在這三個類中的。
既然你的組成部分已經(jīng)被組織起來了,你需要從別的地方去獲得album的數(shù)據(jù),你將會創(chuàng)建一個API類去在全部的代碼中去管理這些數(shù)據(jù)-這將會在你的下一個設計模式-單例中得到展示。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前題目:MVC-設計模式之王-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://chinadenli.net/article4/ddhjoe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、微信公眾號、ChatGPT、軟件開發(fā)、全網(wǎng)營銷推廣、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容