美文网首页
Android 架构设计比较分析

Android 架构设计比较分析

作者: 雷涛赛文 | 来源:发表于2021-02-22 14:08 被阅读0次

           MVC、MVP和MVVM是常见的Android三种架构设计,随着时间的推移,MVC使用率逐渐下降,MVP和MVVM的使用相对比较广泛一些,还是那句话:没有最好的架构,只有最适合的架构。

    一.MVC

    a.简介

           MVC (Model-View-Controller, 模型-视图-控制器):
           模型层 (Model):业务逻辑对应的数据模型,与View无关,而与业务相关;
           视图层 (View):一般使用XML或者Java对界面进行描述;
           控制层 (Controller):在Android中通常指Activity和Fragment,或者由其控制的业务类。

    b.调用关系
    image.png
    c.实现及依赖关系
    image.png
    d.优缺点

           进步:完成了Controller和Model的隔离;
           缺点:
           1.Activity属于controller,但是controller具有view的代码,角色不清晰;
           2.Activity权利很大,可以操作Model,也可以操作View,随着时间的推移,Activity会变的越来越臃肿;
           应用场景:设置页面,只有View和Model这种开关设置界面。

    二.MVP

    a.简介

           MVP (Model-View-Presenter) 是MVC的演化版本,主要部分如下:
           模型层 (Model):主要提供数据存取功能。
           视图层 (View):处理用户事件和视图,在Android中,可能是指Activity、Fragment或者View。
           展示层 (Presenter):负责通过Model存取数据,连接View和Model,从Model中取出数据交给View。
           Model和View不会直接发生关系,它们需要通过Presenter来进行交互。

    b.调用关系
    image.png
    c.实现及依赖关系
    image.png
    d.优缺点

           进步:完成了Activity的拆分,controller---->presenter;将view的interface给presenter,防止presenter权利过大;Activity实现interface,角色清晰。
            缺点:
           1.增加了接口文件;
           2.增加了更改麻烦,改接口、改presenter、改activity;
           应用场景:经常变化的页面,主界面。

    三.MVVM

    a.简介

           MVVM(Model-View-ViewModel):是 MVP 的改进版,MVVM 就是将其中的 View 的状态和行为抽象化,将视图 UI 和业务逻辑分开。
            模型层 (Model):负责从各种数据源中获取数据;
            视图层 (View):在 Android 中对应于 Activity 和 Fragment,用于展示给用户和处理用户交互,会驱动 ViewModel 从 Model 中获取数据;
            ViewModel层:用于将 Model 和 View 进行关联,可以在 View 中通过 ViewModel 从 Model 中获取数据;当获取到了数据之后,会通过自动绑定,比如 DataBinding,来将结果自动刷新到界面上。
           由DataBinding:数据绑定来实现。

    b.调用关系
    image.png
    c.实现及依赖关系
    image.png
    d.优缺点

           进步:加入了DataBinging,代码量变小,目前为止一中比较完美的架构。
           缺点:XML中有代码。
           应用场景:经常变化的页面,主界面。

    四.总结

    类型 创建过程 A/F 特点 缺点 应用建议
    MVC C->M+V C 完成了Controller和Model的隔离 Controller变得越来越复杂 简单的、修改少的页面
    MVP V->P->M V 在MVC的基础上通过Interface彻底分离了View和Model presenter与View的交互会琐碎和复杂 核心、复杂、需求变化快的页面
    MVVM V->VM->M V 在MVP的基础上增加了DataBinding,代码量更小 XML中包含代码 核心、复杂、需求变化快的页面

    相关文章

      网友评论

          本文标题:Android 架构设计比较分析

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