美文网首页
iOS 用MVC 代替MVVM

iOS 用MVC 代替MVVM

作者: 乔布司 | 来源:发表于2017-05-22 00:29 被阅读139次

    现在越来越多的人在开始使用MVVM这种开发模式。但是我想用MVC的人可能更多。当然这两种各有各的好处,在这里我也不说谁好谁不好了。MVC 和MVVC是什么我就不在这里赘述了。如果新手不懂可以百度下。我想用MVC而不用MVVM的一大部分人就是觉得多一个ViewModel找来找去挺麻烦的,而MVC和MVVM本质上区别就是把数据处理的部分全部抽出来做成一个ViewModel,通过类方法直接调用。而View和Controller同样都是指自定义的View和视图控制器ViewController。用MVVM可以是自己的代码更简洁以及更有层次感。

    那么就来说说如何用MVC让我们的代码同样变得又层次感。

    一、给ViewController划分模块

    如下图,我给ViewController六个模块。当然大家也可以按照自己的逻辑给划分下模块,我写的仅仅是根据自己的使用习惯来分类的。我简单的跟大家说下我的划分逻辑。因为VC最重要是是界面,一般是有了界面才进行数据操作的,所以我把UI相关的东西分类了在第一个模块,而有了UI后就应该进行数据装载,当界面存在了,数据也有了我们就可以进行交互了,比如:按钮的点击事件、手势…… 4、5、6就没什么顺序可言了。

    然后我们在书写代码的时候按照自己的分类在指定的Pragma下进行代码书写。

    1. - UI界面相关

    UIView之类相关View的初始化,我个人比较喜欢对View用懒加载的形势写下来。

    2.InitData VC数据的初始化

    比如TableView的数据源网络请求的调用,给相关控件装载初始化值操作

    3.User Action用户交互操作

    按钮的点击事件,或者cell上的事件交互

    4.Delegate代理

    UItableview的相关代理,及其他代理。这里可以也可以拆分成两个模块,主代理和普通代理,主代理只放置UITableViewDelegate,UITableViewDataSource,副代理另写一个Pragma Mark

    5.NetRequest网络请求

    在MVVM中一般网络请求都是抽在ViewModel中的,所以这里单独分一个Mark给网络请求,本来想再分一个Mark给数据处理的,比如对数组中的数据进行过滤。一般不是太长见,如果有规则性的建议分装成对应的Category工具库,如果该类处理的确实比较多,就加个Mark。少的话就暂时放在Other

    6.Other其他,

    文章写的可能比较Low,请轻喷没,如果你们公司还没有像这一类的规范文档,希望这个可以帮到你们。当然如果你们的逻辑和网络处理的又确实比较多,建议你还是用MVVM。但是对于大多数的ViewController交互还是没那么特别复杂的。我觉得MVC就可以了。类文件也少。又的开发者View都喜欢写在ViewController里,这个本人是有强迫征的,只要是自定义View一律抽离出来。

    这样即使ViewController比较臃肿找起来方法是不是也没那么困难了,献给初学者、团队开发者,或者规范比较差的码农,欢迎大家提出各种建议,对于MVC和MVVC的讨论,以及更好更科学更容易被大家接受的分类方法。如果有代码风格比较好的代码,希望大家可以分享出来,最近比较忙,有时间抽空,重新写个完整的类似朋友圈的demo,添加完整的注释,科学的命名。

    相关文章

      网友评论

          本文标题:iOS 用MVC 代替MVVM

          本文链接:https://www.haomeiwen.com/subject/zwdmwttx.html