美文网首页闻道丶iOS(大杂烩)
我所理解的MVC,MVVC,MVVM模式,给控制器层大瘦身

我所理解的MVC,MVVC,MVVM模式,给控制器层大瘦身

作者: flowerflower | 来源:发表于2017-02-16 16:11 被阅读5502次

MVC是过去常用的架构模式,随着App的发展,界面的多样化,显然再使用MVC模式的会导致ViewController代码不断增多,更容易造成一些冗余的代码,如果作为迭代项目的话,更加不易维护。从而诞生了MVVM的架构模式。想想介绍请看下面具体内容

MVC(Model-View-Controller)

Model(模型):数据层,负责存储数据。
View(视图):展现层,用户所看到的页面
Controller(控制器):协调层,负责协调Model和View,根据用户在View上的动作在Model上作出对应的更改,同时将更改的信息返回到View上。
三者之间的关系

Controller可以直接访问Model,也可以直接控制View,但是Model和View不能相互通信,相当于COntroller就是介于这两者之间的协调者。
MVC这个模式这个模式太普遍就不再详细说了

MVVM(Model-View-ViewModel)

MVVM.png
Model(模型):数据层,负责存储数据。
View(控制器):就是ViewController层,他的任务就是从ViewModel层获取数据,然后显示。
ViewModel(视图模型):就是View和Model层的粘合剂,封装业务逻辑处理,封装网络处理,封装数据缓存。就是把原来ViewController层的业务逻辑和页面逻辑等剥离出来放到ViewModel层。

例如:

ViewModel.png

例如:

Controller

MVVC(Model-View-View-Controller)<自己起的名字>

Model(模型):数据层,负责存储数据。
View(视图):展现层,创建需求创建cell
View(视图):
  • 定义数组,用来接收控制中的数据。
  • 处理回调(比如:刷新回调、点击cell回调、加载更多回调、动态视图高度回调等等)
Controller(控制器):
  • 加载网络数据
  • 懒加载

代码走起!!!

控制器层.png

总结

动手写了个小demo,使用MVC模式,控制器层写了97行代码。使用MVVM模式,控制器层写了81行代码.使用MVVC模式,控制器层写了66行代码
虽然这个小demo很简单,但是怎么把这个小demo做到精致才是重点,怎么才能将控制器中的代码减少到最少,该封装的东西封装,该抽取的的地方抽取,这样才有利于维护和修改代码,如果有新的需求或者是bug的修改,我们可以快速定位到某个类里面,如果控制器太多冗余代码找起来也费劲,我觉得作为程序员的话应该以不断提高自己的能力和技术为主,而不是老是歇一歇重复性代码, 这样对自己的技术并没有提高。

demo下载

效果图

相关文章

网友评论

    本文标题:我所理解的MVC,MVVC,MVVM模式,给控制器层大瘦身

    本文链接:https://www.haomeiwen.com/subject/achhwttx.html