大家比较熟悉的设计模式是MVC(模型-视图-控制器)。最近MVVM的设计模式也开始被广泛的使用,今天就用一个小Demo来简单体验一下MVVM。
MVVM是微软提出的一种新型的结构模式。MVVM是Model-View-ViewModel的简写。与传统的MVC类比 ViewModel替换了C的位置。这种设计的模式使得控制器的代码繁琐程度降到很低,我们通过代码来看一下这种这结构的使用。
我们在控制器上显示一个天气状况的View.这个View使用xib来创建。

1.准备独立的View


2.独立的模型Model

3.独立的ViewModel

4.网络请求类中提供类方法 使用AFN请求网络数据

5.在控制器中使用的使用就非常的清晰和简单
控制器需要显示View,那么就去View类中获取。控制器需要View中显示的模型数据,那就去ViewModel类中直接获取。控制器所要做的任务就是中间桥梁作用,把ViewModel的数据交给View去显示。

通过代码来看,ViewModel本质所做的工作就是在传统MVC模式中“C“所做的任务,只是现在把这部分代码独立出来。这样一来控制器内部的逻辑代码就显得比较清晰,干净。 从上述结构来看,这样也可以更加清晰的进行分工合作。View ---ViewModel---Model----网路工具类-----控制器。 他们完全可以独立开来,如果可以在团队合作中善加利用一定可以提高整个项目的结构化水平和层次感。
如果你有更好的建议请致邮件到zihanvip520@163.com,欢迎打扰。
网友评论
我之前用的MVVM有点不同,C和V差不多,数据存放在Model,viewModel和Controller一一对应,数据结构和网络请求另放