MVVM是近幾年一直比較火的架構模式,近期項目使用RAC框架+MVVM寫項目,對MVVM這種架構模式有了一些理解。
1.什么是MVVM
網上文章很多,讀者自行學習基礎知識
M(Model) + V(View/ViewController) + VM(ViewModel)
2.如何在項目中使用
在View/ViewController中創建一個ViewModel,之后所有的數據都從此ViewModel中去獲取。比如tableView的dataSource的Arr,就直接從ViewModel中去獲取等。
本質上是把所有的本來寫在VC中的業務邏輯(比如加載數據,獲取顯示數據)都放在ViewModel中進行,V/VC只關心數據的綁定(RAC或者KVO),以達到Model的變化直接就影響View的效果(其實是ViewModel中對Model進行了改變,V/VC和ViewModel中的數據綁定后起到改變V的效果)。
3.和MVC架構的對比
使用MVVM后才逐漸發現以前對MVC中對于M的理解的有很大偏差,以前認為M層就是一個單純的模型,提供一個模型對象供外界方便調用而已。
其實M層的含義遠遠不止這些,M層應當包含所有關于數據的操作(網絡操作,IO操作等),同時向外提供獲取數據、修改數據的接口(這些以前都會直接放到Controller中操作)。
如果以這樣的方式去理解MVC的架構,C層也能得到很大的釋放。只是在數據變化上會通過其他的方式通知View進行變化。所以說以前用MVC的方式寫發現的問題很可能是對M層的理解不到位引起的。這樣看來,其實MVVM本質上還是沒有脫離MVC的結構,不要過于神話。
相關文章
論MVVM偽框架結構和MVC中M的實現機制
被誤解的 MVC 和被神化的 MVVM
4.MVVM基于RAC
提到MVVM自然會提到RAC框架。RAC框架的使用核心就是bind
思想,和MVVM的寫法十分匹配,使用也非常順手。
5.總結
MVVM是一個和RAC十分匹配的架構。如果不用RAC項目中按照正確的方式組織M層也能起到相同的效果。如果使用MVVM,同時學習使用RAC框架也是十分值得的,其函數式編程思想,鏈式編程思想都值得去思索和品味。