一直以来用MVC,今天用了一下MVVM设计模式,至于MVVM是什么,其他技术大牛的博客,简书等都说的非常深刻,像我这样的虾兵蟹将就不啰嗦了哈,只想说一下自己用的过程和使用MVVM模式的心得。 首先我创建了要用MVVM模式的模块的文件夹,如图所示
个人感觉这样分层级更容易理解,ViewModel负责做三件事:
(1)封装业务逻辑
(2)封装网络处理
(3)封装数据缓存
在这里我用了‘封装’二字,下面我来详细的说一下我的整个过程,大家可能就理解我为什么用封装二字了。
一:创建了了类SCHMvvmViewController,是主控制器。在主控制器里面我创建了tableView,相信大家也很熟悉了。
现在开始进行数据请求,上面说过ViewModel负责封装数据,现在在ViewModel文件夹下创建继承于NSObject的类SCHMvvmViewModel。
二:在SCHMvvmViewModel里面进行数据处理,我用来测试的数据是微博的列表(微博开放的api:
https://api.weibo.com/2/statuses/public_timeline.json),
首先声明了一个方法,给主控制器调用,在这个方法的实现里面开始请求并处理数据,至于网络请求工具,用的是自己项目里面的工具。我用的MJExtension处理数据,模型是在model文件夹下创建的SCHMvvmModel。请求成功,数据处理完毕后,要把数据通过block回调给主控制器,声明两个block,成功回调,失败回调,及声明方法。
三:在这里我封装了一个继承于NSObject的类SCHMvvmClassModel,是存放上面SCHMvvmViewModel的回调的block以及回调方法,这样所有模块的MVVM的ViewModel都可以继承,共用一套回调方法。故上面的SCHMvvmViewModel修改继承自SCHMvvmClassModel。
四:现在回到主控制器,刷新tableView。
五:这样整个MVVM模式的block回调形式就完成啦。这样主控制器与MVC模式下的controller 轻便很多。而ViewModel就是一些代码的封装,然后回调的。