zoukankan      html  css  js  c++  java
  • 使用MVVM减少控制器代码实战(减少56%)

    减少比例= (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,完成字典转模型,对后台做错误处理,显示错误(部分工作在我自己封装的底层网络请求实现的)

     

    • 将网络请求部分工作移到Viewmodel中,本控制器有三个网络请求 这样节省代码量很可观

    2) datasource,以前直接写在控制机器中,现在写到dataSource 文件中,控制器中调用dataSource这个类

     

     

     

    3) viewdidload代码中, 以协议的方式加载数据源

     

     

    4) 本文的待讨论的部分

    • 代理方法没有剥离出来,如果剥离出来,控制器进一步减少到120行左右,代理剥离有点麻烦,感觉没有必要
    • 创建collectionView 的代码没剥离,剥离出来可以再减少20行左右,也参考一些别人的文章,目前觉得就这样了,没必要的
    • 也参考了一些别人的代码原文链接
      如何正确的写好一个UITableView,写的也很高大上,感觉各种继承,真的很复杂耶
     
    131194882-f9f91332ad0e6975
    • 代码 不能过度封装,也不能不封装

    有人对我的网络请求比较感兴趣,我的网络请求,针对公司的后台数据结构做了封装,hud 也封装到网络请求中了

  • 相关阅读:
    COGS 2104. [NOIP2015]神奇的幻方
    洛谷 P1387 最大正方形
    包和一些常用的模块
    模块
    模块的导入和使用
    函数迭代器与生成器
    函数的小知识
    函数的闭包和装饰器
    函数的进阶
    初识函数
  • 原文地址:https://www.cnblogs.com/graveliang/p/5757959.html
Copyright © 2011-2022 走看看