使用MVVM减少控制器代码实战(减少56%)

397 查看

减少比例= (360(原来的行数)-159(瘦身后的行数))/360 = 56%

父类 MVC 和MVVM 前后基本不动

父类主要完成如下三个功能:

  • 1)功能:MJRefrsh +上拉下拉没有更多数据,封装到父类的控制器 子类调用3行代码增加所有刷新功能
  • 2)网络失败:显示网络错误的链接,写在父类子类调用一行代码就可
  • 3)加载数据完成,列表中没有数据提示View,比如购买界面,没有购 买记录,写在父类子类一行代码调用

瘦身思路(总的代码量增加了30多行,但是控制器更清爽了)

111194882-ccaa36aa5b97aad3
  • 网络前网络请求函数是这样的

瘦身结果

121194882-42c431716de3dba6

瘦身具体实现

1)网络请求移到ViewModel

以前网络代码直接写在控制器中,如下所示

  • MVVM封装后控制器中的网络请求是这样的,控制器只取需要的东西,如下所示,不关心一些无关的细节,细节移到ViewModel中,5行搞定了网络请求获取网络数据,还算精简吧!

— 具体实现在viewModle中,viewModel添加hud,完成字典转模型,对后台做错误处理,显示错误(部分工作在我自己封装的底层网络请求实现的)