MVVM介绍
记得那会刚学习ios的时候, 就经常听到"大神们"在说各种没有接触的架构模式. 印象最深刻的当属MVC, 后来的学习, 工作中, 也一直是这么用的. 再后来听到别人说, 有一种架构模式叫MVVM, 问我用过没有, 我很自然的回答, 当然知道了, 然后就很心虚的走开了. 后来查阅了很多资料, 才对这种架构模式有所了解, 我想下次我应该不会太心虚了.
MVC, Model View Controller, 所以听到MVVM的时候, 我脑子的第一反应是, Model View View Model, 查阅资料后, 才知道是Model View ViewModel. 在了解MVVM前, 先看一下, MVC是如何帮助我们运行ios应用程序的吧.

这是一个典型的MVC架构设计, Model负责负数的模型, View负责用户界面的展示, ViewController负责Model和View的交互, beautiful!
可是我们再稍微思考一个问题, View和ViewController是不同的两个控件, 但是它们却总是成对出现, 好像它俩不配对出现, 就不会使用的一样. 那么我们再正规化一点它们的关系.

我个人认为, 这才更准备的描述了MVC的代码. MVC架构的应用中, 几乎所有的逻辑被放在ViewController中处理, 除了ViewController应该处理的一些逻辑之外, 还有很多"表示逻辑(presentation logic)", 说通俗一点就是, 比如View和Model交互前, 建立关系的那种逻辑操作.
如果我们把"表示逻辑"这部分抽离出来, 单独将其封装进行操作, 那么上面的图解就可以改成:

单独的这部分, 我们称之为ViewModel, 它位于View/Controller和Model之间. 这样看起来就好很多了, 它也准确的描述了什么是MVVM. 所以我个人认为, 它就是一个增强版的MVC, 连接了View与Controller, 并将表示逻辑从Controller中移出, 放到一个新的类中, 即ViewModel. 如果MVC早已熟悉, 那么MVVM就不会觉得太复杂.
很明显的, 使用MVVM, 可以大大的减少ViewController的复杂性, 它的三个优点:
1. MVVM可以兼容你当下的使用的MVC架构.
2. MVVM可以增加应用的可测试性.
3. MVVM配合一个绑定机制效果最好.
这些都是本人对MVVM一个相对较粗的理解, 本人也是在不断的学习和锻炼MVVM的使用, 如果想了解更多的关于MVVM的知识, 可以点击下面链接再去了解更多http://www.teehanlax.com/blog/model-view-viewmodel-for-ios/ , 也欢迎各位朋友一起交流学习.

浙公网安备 33010602011771号