MVC
模型-视图-控制器(Model-View-Controller)
MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVVM
(Model-View-ViewModel)
如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。
简单来说,mvc只是单项交互,model,view,controller形成一个循环结构交互图,所以mvc数据改变时,只能通过媒介controller控制层达到目的,视图数据变化并不能立即改变数据源。需要经过层层传递到达数据源,
mvvm就是mvc的加强版,mvvm把mvc的controller变成了view-model,虽然view-model也是view和model之间交互的媒介,但不同的是,view-model可以双向交互,当数据变化时,它能立刻反应到数据源上,同时,数据源的变化也能及时反应到数据身上。这是因为mvvm的双向数据绑定,View的变动,自动反映在ViewModel,反之亦然,这种模式实际上是框架替应用开发者做了一些工作(相当于ViewModel类是由库帮我们生成的),开发者只需要较少的代码就能实现比较复杂的交互。