美文网首页
MVC,MVP,MVVM,MVI

MVC,MVP,MVVM,MVI

作者: wenxiaohua | 来源:发表于2023-02-13 10:49 被阅读0次

MVC

    特点在于 实现关注点分离,即应用程序中的数据模型与业务和展示逻辑进行解耦

用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)

    缺点是不适合android客户端,因为Activity的角色不明确,即可以做view层,又可以做Controller层,导致Activity的职责不断增加,以致于Activity变得臃肿

MVP

特点:P层分别与M层,V层之间双向通信

          View与Model之间不通信,需要通过Presenter传递。P层完全把M层,V层都隔离开了,大部分逻辑都会在Presenter层中

          View会非常薄,不部署任何的业务逻辑,称为 被动视图

          P层通过定义接口的方式进行交互,方便单元测试

缺点:P层没法感知生命周期,导致出现页面销毁了都还在网络请求的问题,容易出现内存泄漏和异常,不过可以接入Lifecycle来获取到生命周期

MVVM:

特点:

        ViewModel与Presenter大致相同,都是负责处理数据和实现业务逻辑,但ViewModel层没有直接或者间接地持有View层的任何引用

        MVVM的本质是数据驱动,利用双向绑定机制,关注点都在于数据上,把解耦做的更彻底

        DataBinding实现了View层与ViewModel数据的双向绑定

MVI:

特点:响应式编程范式,面向数据流和变化的申明式编程范式

新版架构指南做的调整:

        1.将LiveData组件改成了StateFlow   

                为了对协程的使用更友好,更能体现面向数据流响应式编程的思想

        2.ViewModel传递给View的数据限制为View的UiState

                ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层,UIState是能直接控制View组件如何显示数据的,UIState就是页面的状态或者View的State

        3.单数据流还是多数据流的选择

                官方指南并没有强制使用单流

相关文章

网友评论

      本文标题:MVC,MVP,MVVM,MVI

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