App架构之MVP、MVVM、MVC对比

作者: 梦语少年 | 来源:发表于2017-08-09 17:09 被阅读80次

    一、MVC

    MVC,即Model、View、Controller三部分,是最简单的框架模式。


    MVC

    视图(View):用户界面,Android中使用XML布局实现。
    控制器(Controller):业务逻辑,Android中使用Activity实现。
    模型(Model):数据保存,Android中应该单独提取出一个类来实现。

    - MVC在项目中出现的问题
    在Android中,所以的交互都要通过Activity来实现,包括数据的获取、View的绑带、动画、事件监听、逻辑处理,生命周期的管理等等,Activity不再只是一个Controller,它包含了太多不同的功能。而且,其不仅仅违背了单一原创,更导致Activity类过于臃肿,出现异常难以捕捉,与各个模块之间耦合性严重,扩展、新增业务逻辑都会变的困难,测试相关的操作也变的更加复杂。

    - MVC在优化建议(类似于MVP)
    1.View的交互,转移到Fragment中进行处理。
    2.对Actvity中的对数据相关的操作,提取到Model层中,对Model层进行单独的封装,在封装类中处理数据相关的逻辑。
    3.Activity仅仅作为一个容器,只包含必要的UI操作。

    二、MVP

    MVP,即Model、View、Presenter,是当前最主流的APP框架模式,是MVC的升级版。

    MVP

    在MVP中,View或Model只可以和Presenter交互,View和Model之间不会有任何的交互,实现了View与Model之间的解耦,是View与Model相对独立,提高了代码的拓展性,View或Model的复用性。
    而其核心思想就是去除了MVC的Controller层,使用Persenter代替,通过Presenter来实现对Model的操作。而Presenter是View和model的中间层,用于处理业务逻辑,Presenter中不应该存在View交互以及数据存取相关的操作。

    二、MVVM

    MVVM,即Model、View、VIewModel,是还待完善的框架模式,目前使用的比较少。

    MVVM

    MVVM是MVP的演进版本,其核心是实现了双向绑定,其主要依赖于android提供的DataBingding兼容库实现。在MVVM中将MVP中Presenter替换为ViewModel。而ViewModel相当于UI与Model的桥梁,将View与Model直接绑定,并将相关的业务逻辑下移,放在Model层中进行处理。


    参考代码:
    Google官方架构github
    [Android] MVVM设计模式及实例
    Android DataBinding:再见Presenter,你好ViewModel!

    相关文章

      网友评论

        本文标题:App架构之MVP、MVVM、MVC对比

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