淺談MVC/MVP/MVVM設計模式
一.MVC架構(gòu), 優(yōu)點在于將業(yè)務場景按展示數(shù)據(jù)類型劃分出多個模塊, 每個模塊中的C層負責業(yè)務邏輯和業(yè)務展示, 而M和V應該是互相隔離的以做重用, 另外每個模塊處理得當也可以作為重用單元. 拆分在于解耦, 順便做了減負, 隔離在于重用, 提升開發(fā)效率. 缺點是沒有區(qū)分業(yè)務邏輯和業(yè)務展示, 對單元測試不友好.
二.MVP作為MVC的進階版, 提出區(qū)分業(yè)務邏輯和業(yè)務展示, 將所有的業(yè)務邏輯轉(zhuǎn)移到P層, V層接受P層的數(shù)據(jù)更新通知進行頁面展示. 優(yōu)點在于良好的分層帶來了友好的單元測試, 缺點在于分層會讓代碼邏輯優(yōu)點繞, 同時也帶來了大量的代碼工作, 對程序員不夠友好.
三.MVVM設計模式的優(yōu)點
1.? 通過數(shù)據(jù)綁定做數(shù)據(jù)更新 (雙向綁定技術),當Model變化時,View-Model會自動更新,View也會自動變化。很好的做到數(shù)據(jù)的一致性;
2.? 由于控制器的功能大都移動到View上處理,大大的對控制器進行了瘦身;
3.? View的功能進一步強化,具有控制的部分功能. 若想無限增強它的功能,甚至控制器的全部功能幾乎都可以遷移到各個View上, View可以像控制器一樣具有自己都View-Model
4.? 可以對View或ViewController的數(shù)據(jù)處理部分抽象出來一個函數(shù)處理model。樣它們專職頁面布局和頁面跳轉(zhuǎn),它們必然更一步的簡化。
MVVM設計模式的缺點
1.? 數(shù)據(jù)綁定也使得bug很難被調(diào)試。比如你看到頁面異常了,有可能是你的View的代碼有bug,也可能是你的model的代碼有問題。數(shù)據(jù)綁定使得一個位置的Bug被快速傳遞到別的位置,要定位原始出問題的地方就變得不那么容易了。
2.? 數(shù)據(jù)雙向綁定不利于代碼重用??蛻舳碎_發(fā)最常用的是View,但是數(shù)據(jù)雙向綁定技術,讓你在一個View都綁定了一個model,不同的模塊model都不同。那就不能簡單重用view了
3.? 一個大的模塊中model也會很大,雖然使用方便了也很容易保證數(shù)據(jù)的一致性,但是長期持有,不釋放內(nèi)存就造成話費更多的內(nèi)存。
4.MVP和MVVM因為分層所以會建立MVC兩倍以上的文件類, 需要良好的代碼管理方式.
特別鳴謝大神提供參考與轉(zhuǎn)載鏈接:??雜談: MVC/MVP/MVVM - CocoaChina_一站式開發(fā)者成長社區(qū)