MVVM簡單使用

MVVM 是一種軟件架構(gòu)模式凉敲,它是 Martin Fowler 的 Presentation Model 的一種變體,最先由微軟的架構(gòu)師 John Gossman 在 2005 年提出,并應(yīng)用在微軟的 WPF 和 Silverlight 軟件開發(fā)中。MVVM 衍生于 MVC ,是對 MVC 的一種演進(jìn),它促進(jìn)了 UI 代碼與業(yè)務(wù)邏輯的分離糜工。

MVC 與 MVVM 有什么異同點,MVC 到 MVVM 是怎樣演進(jìn)的录淡;

MVC

MVC 是 iOS 開發(fā)中使用最普遍的架構(gòu)模式捌木,同時也是蘋果官方推薦的架構(gòu)模式。MVC 代表的是 Model–view–controller 嫉戚,它們之間的關(guān)系如下:

是的刨裆,MVC 看上去棒極了,model 代表數(shù)據(jù)彬檀,view 代表 UI 帆啃,而 controller 則負(fù)責(zé)協(xié)調(diào)它們兩者之間的關(guān)系。然而窍帝,盡管從技術(shù)上看 view 和 controller 是相互獨立的努潘,但事實上它們幾乎總是結(jié)對出現(xiàn),一個 view 只能與一個 controller 進(jìn)行匹配坤学,反之亦然疯坤。既然如此,那我們?yōu)楹尾粚⑺鼈兛醋饕粋€整體呢:

因此深浮,M-VC 可能是對 iOS 中的 MVC 模式更為準(zhǔn)確的解讀压怠。在一個典型的 MVC 應(yīng)用中,controller 由于承載了過多的邏輯飞苇,往往會變得臃腫不堪刑峡,所以 MVC 也經(jīng)常被人調(diào)侃成 Massive View Controller :

iOS architecture, where MVC stands for Massive View Controller.

坦白說洋闽,有一部分邏輯確實是屬于 controller 的,但是也有一部分邏輯是不應(yīng)該被放置在 controller 中的突梦。比如,將 model 中的 NSDate 轉(zhuǎn)換成 view 可以展示的 NSString 等羽利。在 MVVM 中宫患,我們將這些邏輯統(tǒng)稱為展示邏輯。

MVVM

因此这弧,一種可以很好地解決 Massive View Controller 問題的辦法就是將 controller 中的展示邏輯抽取出來娃闲,放置到一個專門的地方,而這個地方就是 viewModel 匾浪。其實皇帮,我們只要在上圖中的 M-VC 之間放入 VM ,就可以得到 MVVM 模式的結(jié)構(gòu)圖:

從上圖中蛋辈,我們可以非常清楚地看到 MVVM 中四個組件之間的關(guān)系属拾。注:除了 view 、viewModel 和 model 之外冷溶,MVVM 中還有一個非常重要的隱含組件 binder :

view :由 MVC 中的 view 和 controller 組成渐白,負(fù)責(zé) UI 的展示,綁定 viewModel 中的屬性逞频,觸發(fā) viewModel 中的命令纯衍;

viewModel :從 MVC 的 controller 中抽取出來的展示邏輯,負(fù)責(zé)從 model 中獲取 view 所需的數(shù)據(jù)苗胀,轉(zhuǎn)換成 view 可以展示的數(shù)據(jù)襟诸,并暴露公開的屬性和命令供 view 進(jìn)行綁定;

model :與 MVC 中的 model 一致基协,包括數(shù)據(jù)模型歌亲、訪問數(shù)據(jù)庫的操作和網(wǎng)絡(luò)請求等;

binder :在 MVVM 中堡掏,聲明式的數(shù)據(jù)和命令綁定是一個隱含的約定应结,它可以讓開發(fā)者非常方便地實現(xiàn) view 和 viewModel 的同步,避免編寫大量繁雜的樣板化代碼泉唁。在微軟的 MVVM 實現(xiàn)中鹅龄,使用的是一種被稱為XAML的標(biāo)記語言。

下面創(chuàng)建項目-簡單Demo展示MVVM



這就是ViewModel需要做的事情亭畜,做好網(wǎng)絡(luò)請求扮休,獲取數(shù)據(jù),轉(zhuǎn)換為模型拴鸵,然后我們在VC中調(diào)用玷坠,Model模型里面存儲的是name蜗搔,icon,intro屬性八堡,那么接下來我們來看控制器做了什么事情


這樣就完成了樟凄,筆者還不會markDown語法,寫的布局垃圾兄渺,請不要噴我缝龄,有不懂的,需要要demo的可以聯(lián)系1170758545@qq.com挂谍,謝謝叔壤!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市口叙,隨后出現(xiàn)的幾起案子炼绘,更是在濱河造成了極大的恐慌,老刑警劉巖妄田,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俺亮,死亡現(xiàn)場離奇詭異,居然都是意外死亡形庭,警方通過查閱死者的電腦和手機铅辞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萨醒,“玉大人斟珊,你說我怎么就攤上這事「恢剑” “怎么了囤踩?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晓褪。 經(jīng)常有香客問我堵漱,道長,這世上最難降的妖魔是什么涣仿? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任勤庐,我火速辦了婚禮,結(jié)果婚禮上好港,老公的妹妹穿的比我還像新娘愉镰。我一直安慰自己,他們只是感情好钧汹,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布丈探。 她就那樣靜靜地躺著,像睡著了一般拔莱。 火紅的嫁衣襯著肌膚如雪碗降。 梳的紋絲不亂的頭發(fā)上隘竭,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音讼渊,去河邊找鬼动看。 笑死,一個胖子當(dāng)著我的面吹牛爪幻,可吹牛的內(nèi)容都是我干的弧圆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼笔咽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了霹期?” 一聲冷哼從身側(cè)響起叶组,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎历造,沒想到半個月后甩十,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡吭产,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年侣监,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臣淤。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡橄霉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邑蒋,到底是詐尸還是另有隱情姓蜂,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布医吊,位于F島的核電站钱慢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卿堂。R本人自食惡果不足惜束莫,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望草描。 院中可真熱鬧览绿,春花似錦、人聲如沸陶珠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揍诽。三九已至诀蓉,卻和暖如春栗竖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渠啤。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工狐肢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沥曹。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓份名,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妓美。 傳聞我的和親對象是個殘疾皇子僵腺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容