为什么MVVM无法拯救你的项目

作者: 溪石iOS | 来源:发表于2018-12-16 13:59 被阅读28次

    MVVM在MVC的基础上,增加了一层 ViewModel,目的是为了解决 MVC 架构模式中 ViewController 过于臃肿的问题,基本结构如图:


    MVVM

    ViewModel 有以下特点:

    1. ViewModel 持有 Model,但不能包含任何UI对象。
    2. View只处理数据,而不处理UI交互逻辑。
    3. ViewModel 的独立性,使得它便于单元测试,也能够被多个 View(ViewController)复用。

    初学者往往将UI对象设计为ViewModel的属性,甚至还抑制不了在 ViewModel 中处理页面导航的冲动,结果导致 ViewModel 成为另一个 ViewController,我们知道 ViewController 还处理了如旋转等设备事件,结果导致 ViewController 和 ViewModel 紧耦合,上面提到的特点3也就无从谈起。
    也有很多初学者希望MVVM能减少其开发量,实际上,由于 ViewModel 层是新增加的一层,负责的是数据加工,如字符串拼接、数据格式化等工作,并没有代替 ViewController 管理 View 交互的职责,加上额外的与 ViewModel 交互的工作,代码量是增加的,如果开发团队人力资源有限,项目没有延续性(一个项目开发的成果很少能延续到下一个项目),是否使用MVVM就需要慎重平衡。

    因此 MVVM 既不是更高级的 MVC,也不是iOS开发开发的“银弹”,就像一家石油公司,在大范围中运输中,石油管道有无比优势,但如果只是将油运到一个农村的农机加油站,小油罐车就变得更有优势。

    思考题:
    网络请求一直是导致 ViewController 臃肿的罪魁祸首,MVVM中,应该将网络请求放到哪一层,为什么?欢迎你的留言。

    相关文章

      网友评论

        本文标题:为什么MVVM无法拯救你的项目

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