MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已

    Model-ViewModel-View-Controller
    image.png
    比MVC架构中多了一个ViewModel,没错,就是这个ViewModel,他是MVVM相对于MVC改进的核心思想

    • 在开发过程中,由于需求的变更或添加,项目的复杂度越来越高,代码量越来越大,此时我们会发现MVC维护起来有些吃力,首先被人吐槽的最多的就是MVC的简写变成了Massive-View-Controller(意为沉重的Controller)
    • 由于Controller主要用来处理各种逻辑和数据转化,复杂业务逻辑界面的Controller非常庞大,维护困难,所以有人想到把Controller的数据和逻辑处理部分从中抽离出来,用一个专门的对象去管理,这个对象就是ViewModel,是Model和Controller之间的一座桥梁

    人们去尝试这种方式时,发现Controller中的代码变得非常少,变得易于测试和维护,只需要Controller和ViewModel做数据绑定即可,这也就催生了MVVM的热潮

    MVVM值得用么?

    • 个人非常推荐使用,并且可以直接在你现有的MVC基础上进行扩展

    优点:

    1. Controller清晰简洁: ViewModel分离了大部分Controller代码,更加清晰和容易维护。
    2. 方便测试:开发中大部分Bug来至于逻辑处理,由于ViewModel分离了许多逻辑,可以对ViewModel构造单元测试。
    3. 开发解耦(举两个例子):
      1. 一人负责逻辑实现、另一人负责UI实现;
      2. 敏捷开发时,会发经常发不是等后端做好了接口我们再去开发,不过在没有接口的情况下通常我们可以把Controller和View完成


    缺点:

    1. 看起来代码会比MVC多点
    2. 需要对每个Controller实现绑定,如果处理不好,反而会有一种“画虎不成反类犬”的感觉

    案例:

    1. C-41
    2. MVVMTest