A-A+

[开源APP推荐] MVVM – 一个iOS头条APP,使用MVVM架构实现

2016年05月06日 开源APP 暂无评论 阅读 3,800 views 次

MVVM - 一个iOS头条APP,使用MVVM架构实现

 

前言:

一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便。用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题或者建议意见就issues!

本例基于AFN封装了网络请求系列库,以满足自己需求,后期易于扩展;使用JSONModel解析json数据;每个VC都有自己的ViewModel类用来处理网络请求和其他逻辑处理;使用经典的UITableView展示MVVM架构,适合初学MVVM的coder参考。

简介:
MVVM的出现主要是为了解决在开发过程中Controller越来越庞大的问题,变得难以维护,所以MVVM把数据加工的任务从Controller中解放了出来,使得Controller只需要专注于数据调配的工作,ViewModel则去负责数据加工并通过通知机制让View响应ViewModel的改变。

MVVM是基于胖Model的架构思路建立的,然后在胖Model中拆出两部分:Model和ViewModel。ViewModel本质上算是Model层(因为是胖Model里面分出来的一部分),所以View并不适合直接持有ViewModel,因为ViewModel有可能并不是只服务于特定的一个View,使用更加松散的绑定关系能够降低ViewModel和View之间的耦合度。

在一个典型的 MVC 应用中,controller 由于承载了过多的逻辑,往往会变得臃肿不堪,所以 MVC 也经常被人调侃成 Massive View Controller。(Massive译:大量的、巨大的、臃肿不堪的)

因此,一种可以很好地解决 Massive View Controller 问题的办法就是将 controller 中的展示逻辑抽取出来,放置到一个专门的地方,而这个地方就是 viewModel 。其实,我们只要在上图中的 M-VC 之间放入 VM ,就可以得到 MVVM 模式的结构图:

小结:

综上所述,我们只要将 MVC 中的 controller 中的展示逻辑抽取出来,放置到 viewModel 中,然后通过一定的技术手段,来同步 view 和 viewModel ,就完成了 MVC 到 MVVM 的转变。

联系我
微信公众号:iOSDevTeam

Email: shenguanhua123@gmail.com

 

Githubhttps://github.com/shenAlexy/MVVM

 

h1

给我留言

Copyright © iOSCodeHub 保留所有权利.  

用户登录 ⁄ 注册

分享到: