溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MVC -設計模式之王

發布時間:2020-07-23 04:53:42 來源:網絡 閱讀:291 作者:緣起愿落 欄目:開發技術

MVC -設計模式之王

Model View Controller Cocoa的基石之一,且毫無疑問的是所有設計模式中最常用的設計模式,它根據你的應用中的一般角色去分類對象,鼓勵在完全分離的模式下分角色。

           Model:這個對象hold住你的應用數據,且定義如何去操作它,例如本例中就是Album類。

           View:這個對象掌管了Model的可視化顯示,和控制用戶的交互,基本上所有的都是UIView和它的子類。在本例中這個就是被分離成的AlbumView類。

           Controller:控制器是調節所有工作的調節器,它訪問模型中的數據,然后用視圖去顯示它,根據要求監聽事件和操作數據。你能想象在這個哪個是Controller么,就是ViewController.

視圖和模型通過控制器去交流的場景可以被描述成以下圖:

MVC -設計模式之王

如果在Model中有任何數據變化,那么它就會通知Controller,反過來,Controller更新在View中的數據,View可以通知Controller關于用戶的行為,然后Controller要么根據需要或者檢索要求的數據去更新Model。

你也許會懷疑為什么不只是創建了Controller然后將ViewModel一起放到里面去實現?那樣看起來不是更容易么?

這所有的所有都是為了是代碼分離化和提高可重用性。理想情況下,視圖應該會從Model中完全分離出來,如果視圖不依賴于某個具體的Model的實現部分,那么它可以用不同的Model去展示其他一些數據來實現它的可重用性。

例如:如果將來你想添加一些電影和書籍到你的庫中去,你仍然可以使用相同的AlbumView去展示你的電影和書籍的對象,更進一步說,如果你想去創建一個工程去處理專輯,你可以很簡單的去重用你的Album類,因為它不依賴于任何一個視圖。這就是MVC的魔力。

如何實現MVC模式

首先,你需要確保你的工程中的每一個類都是Controller,或者View,或者Model,不要講任何兩個中的角色的任務連接在一塊,通過創建Album和AlbumV類你已經做了一個很好的工作。

其次,為了確保遵守這個工作方法,你應該創建三個工程組去hold住你的代碼,每類一個分組。

按住Command+option+N鍵,創建一個組,名為Model,同樣創建View和Controller,將Album.h和Album.m拖入Model中,拖動AlbumView.hAlbumView.m的視圖組,最后拖ViewController.hViewController.m到控制器組.

這時候你的工程結構應該看起來是這樣的:

MVC -設計模式之王

現在看起來沒有那些文件浮在四周,看著好多了。顯然你可以有其他的組和類,但是這個應用中的核心就是包含在這三個類中的。

既然你的組成部分已經被組織起來了,你需要從別的地方去獲得album的數據,你將會創建一個API類去在全部的代碼中去管理這些數據-這將會在你的下一個設計模式-單例中得到展示。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

mvc
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女