美文网首页Android 知识点及效果
Android中MVC、MVP、MVVM的区别与使用

Android中MVC、MVP、MVVM的区别与使用

作者: TRT131 | 来源:发表于2019-03-02 16:16 被阅读141次

    一.MVC

    MVC是Model-View-Controller的缩写,从字面意思可以拆分成如下结构:

    • Model 模型:
      封装了业务逻辑相关的数据以及处理方法

    • View 视图:
      用于渲染页面,(对应了布局以及各类控件)

    • Controller 控制器:
      用于连接View和Model,处理流程以及页面之间的逻辑(对应了Activity及Fragment)

    MVC的特点

    它将数据、视图、控制分开,实现了松耦合。

    • View将事件传递到Controller中
    • Controller完成想要业务后改变Model状态
    • Model更新View
    MVC的优点
    1. 实现了解耦合,修改其中一层时,不用修改另外两层代码
    2. 可维护性高,松耦合也就意味着维护起来更加方便
    3. 重用性高
    MVC的缺点
    1. 由于控件的数据绑定都需要在Activity中完成,Activity/Fragment在View与Controller的定义中有点模糊。
    2. 伴随着业务的增加,Controller容易变得臃肿。

    二.MVP

    MVP(Model-View-Presenter)是MVC的改良模式。与MVP一样,实现了视图、模型、控制的解耦,重点是改变的通信方式。

    image
    Android的MVP实现
    MVP的特点
    • View接受事件,传递给Presenter
    • Presenter做逻辑处理,修改Model
    • Model通知Presenter数据变化,Presenter更新View
    MVP的优点
    1. 将Model与View完全分隔,提高了可扩展性。
    2. 便于测试。在测试Presenter时,只要实现View的接口并注入到Presenter就可以测试Presenter的业务逻辑。
    MVP的缺点
    1. 与MVC一样,P层起到的控制功能伴随着业务的增多,也会变得臃肿。
    2. Presneter需要持有View的引用,同时View也需要持有Presenter的引用,控制上存在一定复杂度。

    三.MVVM

    MVVM实现了数据与UI的双重绑定,其中DataBinding是实现MVVM的关键工具。

    • Model
      与MVC和MVP一样,Model层保存了业务数据与处理方法
    • View
      对应Activity以及XML,但是比起MVC与MVP框架中的View层,更加简洁
    • ViewModel
      负责实现View与Model的交互,将两者分离
    MVVM
    MVVM的特点
    1. View接受事件,转交给ViewModel
    2. ViewModel操作Model更新数据
    3. Model更新后通知ViewModel,ViewModel更新View数据
    MVVM的优点
    1. 低耦合。由于ViewModel的存在,View可以独立于Model变化与修改;同理,Model也可以独立于View变化与修改。
    2. 可重用性。一个ViewModel可被多个View重复绑定,实现同一组业务。
    3. ViewModel中解决了MVP中V-P互相持有引用的问题,使得结构更清晰,简洁
    MVVM的缺点
    1. ViewModel持有Model的依赖。
    2. 数据绑定方式使得bug难以确定是在View中还是在Model中。

    相关文章

      网友评论

        本文标题:Android中MVC、MVP、MVVM的区别与使用

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