2018-02-27


最近在學(xué)習(xí)設(shè)計模式算吩,自己做了個小demo佃扼。下面記錄下

實際iOS開發(fā)中的MVC模式中,controller模塊跟view模塊緊密耦合压昼,很容易形成胖controller窍霞,可單元測試弱拯坟。但能快速開發(fā)。MVP模式把傳統(tǒng)的iOS開發(fā)的MVC模式下比較完美的展示冷溃。使用Presenter模塊當(dāng)做controller梦裂。把傳統(tǒng)的UIViewController跟UIView當(dāng)作view模塊,綁定view跟model菠净。這個設(shè)計模式增強了代碼的單元測試。MVP跟MVC都存在一個問題牵咙,很容易形成胖的viewController跟胖的presenter攀唯。而MVVM 中使用的是響應(yīng)式viweModel 是個中介者。它做數(shù)據(jù)處理另凌,雙向綁定技術(shù)戒幔,當(dāng)Model變化時,View-Model會自動更新工坊,View也會自動變化王污。很好做到數(shù)據(jù)的一致性楚午,不用擔(dān)心,在模塊的這一塊數(shù)據(jù)是這個值,在另一塊就是另一個值了。所以 MVVM模式有些時候又被稱作:model-view-binder模式啊易。 MVVM的缺點是難以調(diào)式租谈。數(shù)據(jù)綁定使得一個位置的 Bug 被快速傳遞到別的位置捆愁,要定位原始出問題的地方就變得不那么容易了。?

MVC

以上所述呻逆,似乎Cocoa MVC 看起來是一個相當(dāng)差的架構(gòu)方案咖城。我們來重新評估一下文章開頭我們提出的MVC一系列的特征:

任務(wù)均攤--View和Model確實是分開的,但是View和Controller卻是緊密耦合的

可測試性--由于糟糕的分散性宜雀,只能對Model進行測試

易用性--與其他幾種模式相比最小的代碼量。熟悉的人很多悴品,因而即使對于經(jīng)驗不那么豐富的開發(fā)者來講維護起來也較為容易简烘。

如果你不想在架構(gòu)選擇上投入更多精力,那么Cocoa MVC無疑是最好的方案届氢,而且你會發(fā)現(xiàn)一些其他維護成本較高的模式對于你所開發(fā)的小的應(yīng)用是一個致命的打擊悼沈。

“就開發(fā)速度而言姐扮,Cocoa MVC是最好的架構(gòu)選擇方案茶敏「壳危”

總結(jié)

vc中子類view跟model,

MVP

MVP是第一個如何協(xié)調(diào)整合三個實際上分離的層次的架構(gòu)模式恬惯,既然我們不希望View涉及到Model亚茬,那么在顯示的View Controller(其實就是View)中處理這種協(xié)調(diào)的邏輯就是不正確的,因此我們需要在其他地方來做這些事情碗暗。例如梢夯,我們可以做基于整個App范圍內(nèi)的路由服務(wù),由它來負(fù)責(zé)執(zhí)行協(xié)調(diào)任務(wù)噪奄,以及View到View的展示。這個出現(xiàn)并且必須處理的問題不僅僅是在MVP模式中都毒,同時也存在于以下集中方案中叙谨。

我們來看下MVP模式下的三個特性的分析:

任務(wù)均攤--我們將最主要的任務(wù)劃分到Presenter和Model,而View的功能較少(雖然上述例子中Model的任務(wù)也并不多)涤垫。

可測試性--非常好竟终,由于一個功能簡單的View層,所以測試大多數(shù)業(yè)務(wù)邏輯也變得簡單

易用性--在我們上邊不切實際的簡單的例子中榆芦,代碼量是MVC模式的2倍喘鸟,但同時MVP的概念卻非常清晰

“iOS 中的MVP意味著可測試性強、代碼量大崎淳°蛋眩”

總結(jié)

在viewController中只有view屬于它的子類,model不屬于嚣镜。model放在presenter中橘蜜。

Presenter把model跟view綁定扮匠,

MVVM

Model層是少不了的了,我們得有東西充當(dāng)DTO(數(shù)據(jù)傳輸對象)疹蛉,當(dāng)然力麸,用字典也是可以的育韩,編程么筋讨,要靈活一些摸恍。

ViewModel層,就是View和Model層的粘合劑立镶,他是一個放置用戶輸入驗證邏輯,視圖顯示邏輯嗜逻,發(fā)起網(wǎng)絡(luò)請求和其他各種各樣的代碼的極好的地方缭召。說白了,就是把原來* ViewController層的業(yè)務(wù)邏輯和頁面邏輯等剝離出來放到ViewModel層萄凤。

View層搪哪,就是ViewController層,他的任務(wù)就是從ViewModel層獲取數(shù)據(jù),然后顯示神年。 上面對MVVM就先簡單的這么一說,好好的理解并應(yīng)用的話已日,還得實戰(zhàn)。

總結(jié)

把處理數(shù)據(jù)邏輯放到viewmodel里堂鲜,viewController只需要接收返回的數(shù)據(jù)缔莲。

VC上綁定一個viewModel ,viewModel處理完數(shù)據(jù)后通知view刷新霉旗。VC的屬性有viewModel跟view, viewModel屬性有model蛀骇。viewModel獲得model數(shù)據(jù)读拆,通過viewModel接收事件。viewModel層是處理model數(shù)據(jù)后返回最后的結(jié)果給view暑诸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末个榕,一起剝皮案震驚了整個濱河市伞矩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苛让,老刑警劉巖湿诊,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅须,死亡現(xiàn)場離奇詭異,居然都是意外死亡朗和,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忆植,“玉大人,你說我怎么就攤上這事朝刊。” “怎么了冯挎?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵织堂,是天一觀的道長。 經(jīng)常有香客問我附较,道長潦俺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任早像,我火速辦了婚禮肖爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劝堪。我一直安慰自己秒啦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布驻呐。 她就那樣靜靜地躺著芳来,像睡著了一般。 火紅的嫁衣襯著肌膚如雪即舌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音芜飘,去河邊找鬼磨总。 笑死,一個胖子當(dāng)著我的面吹牛娶牌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诗良,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼鉴裹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了督禽?” 一聲冷哼從身側(cè)響起总处,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胧谈,沒想到半個月后第岖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體试溯,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摹闽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舵匾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坐梯,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布偷溺,位于F島的核電站,受9級特大地震影響挫掏,放射性物質(zhì)發(fā)生泄漏砍濒。R本人自食惡果不足惜硫麻,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拿愧。 院中可真熱鬧,春花似錦券敌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绪囱。三九已至,卻和暖如春扣甲,著一層夾襖步出監(jiān)牢的瞬間琉挖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工示辈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妙同。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像胰耗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芒涡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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