MVVM衍生于MVC,是对MVC的一种演进,它促进了UI与业务逻辑的分离。
MVC ---- model-view-controller,苹果官方推荐的一种架构模式,这种模式下controller管理了大部分逻辑,耦合性偏高过于复杂。
其中model用来存储数据,一般继承自NSObject
view代表UI,用来显示model存储的数据
controller用来控制model和view两者之间的关系
尽管从技术上看view和controller是相互独立的,但事实上大部分情况下一个controller对应唯一一个view,因此可将view和controller看做成一个整体,model为另一部分,即M-VC模式。controller承担了很重的逻辑实现,其中可简化一些展示逻辑,例如:将model中的NSDate转换成view中可以展示的NSString等。
MVVM模式就是将MVC中controller的展示逻辑抽取出来,放置在viewModel中来管理。
view:MVC中view和controller组成,负责UI的展示,绑定viewModel中的属性,触发viewModel中的命令;
viewModel:从MVC的controller中抽取出来的展示逻辑,负责从model中获取view所需的数据,转换成view可以展示的数据,并暴露公开的属性和命令供
view进行绑定;
model:和MVC中的model一致,包括数据类型、访问数据库的操作和网络请求等;
binder:在MVVM中,声明式的数据和命令绑定是一个隐含的约定,它可以让开发者非常方便地实现view和viewModel的同步,避免编写大量繁杂的样板化代码。
综上所述:MVVM是将controller中的展示逻辑抽取出来,放置到viewModel中,然后通过一定的技术手段,比如RAC来同步view和viewMode,就完成了MVC到MVVM的转变。
名词:RAC(ReactiveCocoa)、binder、viewModel
参考链接:
http://blog.leichunfeng.com/blog/2016/02/27/mvvm-with-reactivecocoa/#jtss-tsina