MVC:model和view分离开来,通过一个controller来处理model和view之间的通信。
缺点:controller可能会非常庞大,需要处理一些乱七八糟的逻辑,比如网络请求,数据逻辑的转换等等。
MVVM
把controller不应该负责的内容剥离出来,将 Model 数据转换为 View 可以呈现的东西”这一可能极为复杂的过程剥离出来,放到ViewModel对象中。
视图模型(ViewModel)依然是一个模型(Model),它为View提供了可以拿来使用的数据,也从模型(Model)提取数据并加以转化处理。
以一个简单的链状结构表示MVVM架构就是
View/ViewController ————> ViewModel ————> Model
这里ViewController对象直接持有一个ViewModel对象。ViewModel对象又直接持有Model对象。箭头不能被反向
Model 中存放一些实体对象,viewModel中进行业务逻辑的处理,viewcontroller只负责页面的显示。