KXm三元九运,九紫离火运-九紫运

#编程KXm三元九运,九紫离火运-九紫运

首先MVC,MVP,MVVM都是为了解决UI页面与逻辑代码分离而出现的模式,MVP和MVVM都是MVC的基础上演化而来。他不属于某种语言的框架,只要是有UI页面与逻辑代码我们都可以使用这几种框架去搭建我们的项目。他是一种框架模式。
KXm三元九运,九紫离火运-九紫运

        M和V分别指Model层和View层,但其功能会因为框架的不同而变化。Model层是数据模型,用来存储数据;View层是视图,展示Model层的数据。KXm三元九运,九紫离火运-九紫运

        虽然在不同的MV(XX)框架中,Model层和View层的内容可能会有所差别,但是其基础功能不变,变的只是 数据的传输方式 。KXm三元九运,九紫离火运-九紫运

    MVC —— Model-View-Controller: 作为 Controller 层的 Actvity/Fragment 等充当了 View 的角色,代码过于臃肿;同时在 View 层又容易直接操作 Model,导致 View 和 Model 层耦合,无法独立复用。有时候看到一个 Activity 能有几千甚至上万行的代码,简直噩梦。KXm三元九运,九紫离火运-九紫运

        MVP —— Model-View-Presenter: Presenter 和 View 层之间通过定义接口实现通信,解耦了 View 和 Model 层。然而当业务场景比较复杂时,接口定义会越来越多,且可能定义模糊,接口一旦变化,对应实现也需要发生变化。KXm三元九运,九紫离火运-九紫运

        MVVM —— Model-View-ViewModel: MVVM 解决了 MVP 的问题,使得 ViewModel 和 View 之间不再依赖接口通信,而是通过 LiveData, RxJava, Flow 等响应式开发的方式来通信。KXm三元九运,九紫离火运-九紫运

        MVI —— ?KXm三元九运,九紫离火运-九紫运

___________________________________________________________________KXm三元九运,九紫离火运-九紫运

MVCKXm三元九运,九紫离火运-九紫运

        MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写KXm三元九运,九紫离火运-九紫运

        Model:模型层,数据模型及其业务逻辑,是针对业务模型建立的数据结构,Model与View无关,而与业务有关。KXm三元九运,九紫离火运-九紫运

        View:视图层,用于与用户实现交互的页面,通常实现数据的输入和输出功能。KXm三元九运,九紫离火运-九紫运

        Controller:控制器,用于连接Model层和View层,完成Model层和View层的交互。还可以处理页面业务逻辑,它接收并处理来自用户的请求,并将Model返回给用户。KXm三元九运,九紫离火运-九紫运


KXm三元九运,九紫离火运-九紫运

优点:
耦合性低,生命周期成本低,部署快,可维护性高,适用于快速开发的小型项目
缺点:
不适合大型,中等项目,View层Controller层连接过于紧密
View层对Model层的访问效率低
一般的高级UI页面工具和构造器不支持MVC模式KXm三元九运,九紫离火运-九紫运

___________________________________________________________________KXm三元九运,九紫离火运-九紫运

MVPKXm三元九运,九紫离火运-九紫运

        MVP全名是Model View Presenter,是模型(model)-视图(view)-表示器(Presenter)的缩写KXm三元九运,九紫离火运-九紫运

        Model:模型层,用于数据存储以及业务逻辑。KXm三元九运,九紫离火运-九紫运

        View:视图层,用于展示与用户实现交互的页面,通常实现数据的输入和输出功能。KXm三元九运,九紫离火运-九紫运

        Presenter:表示器,用于连接M层、V层,完成Model层与View层的交互,还可以进行业务逻辑的处理。KXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运

执行流程:KXm三元九运,九紫离火运-九紫运

1、View层收到用户的操作KXm三元九运,九紫离火运-九紫运

2、View层把用户的操作交给PresenterKXm三元九运,九紫离火运-九紫运

3、Presenter直接操作Model层进行业务逻辑处理KXm三元九运,九紫离火运-九紫运

4、Model层处理完毕后,通知PresenterKXm三元九运,九紫离火运-九紫运

5、Presenter收到通知后,去更新View层KXm三元九运,九紫离火运-九紫运

        在MVP模式中,Model与View无法直接进行交互,所以Presenter层会从Model层获得数据,适当处理后交给View层进行显示KXm三元九运,九紫离火运-九紫运

在MVP模式中,Presenter层将View层和Model层进行隔离,使View和Model之间不存在耦合,同时将业务逻辑从View层剥离KXm三元九运,九紫离火运-九紫运

优点:KXm三元九运,九紫离火运-九紫运

        可以更高效的使用Model,所有的交互都发生在——Presenter内部KXm三元九运,九紫离火运-九紫运

        将一个Presenter用于多个视图,而不需要改变Presenter的逻辑,View变化比Model变化频繁,逻辑结构清晰,View层代码不再臃肿KXm三元九运,九紫离火运-九紫运

缺点:KXm三元九运,九紫离火运-九紫运

1、MVP模式基于接口设计,会增加很多类,代码逻辑虽然清晰,但代码量庞大KXm三元九运,九紫离火运-九紫运

2、MVP适用于中小型项目,大型项目慎用KXm三元九运,九紫离火运-九紫运

3、MVC和MVP的主要区别:KXm三元九运,九紫离火运-九紫运

4、MVP中View与Model并不直接交互,而是通过与Presenter交互来与Model间接交互KXm三元九运,九紫离火运-九紫运

5、MVP中Controller是基于行为的,并且可以被多个View共享,Controller可以负责决定显示哪个ViewKXm三元九运,九紫离火运-九紫运

6、MVP中Presenter与View的交互是通过接口来进行的,更有利于添加单元测试。KXm三元九运,九紫离火运-九紫运

7、MVC中View可以与Model直接交互,通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑KXm三元九运,九紫离火运-九紫运

___________________________________________________________________KXm三元九运,九紫离火运-九紫运

MVVMKXm三元九运,九紫离火运-九紫运

MVVM 即 Model-View-ViewModelKXm三元九运,九紫离火运-九紫运

        M——Model(模型)实体模型,定义实体类,获取业务数据模型,如通过数据库或者网络来操作数据等KXm三元九运,九紫离火运-九紫运

        V——View(视图)布局文件(XML),主要进行控件的初始化设置KXm三元九运,九紫离火运-九紫运

      VM——ViewModel(控制器):连接 View 与 Model 的中间桥梁,ViewModel 与 Model 直接交互,通过DataBinding将数据变化反应给ViewKXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运

 存在两个方向都实现的情况,叫做数据的双向绑定。双向数据绑定可以说是一个模板引擎,它会根据数据的变化实时渲染。如图3.3所示,View层和Model层之间的修改都会同步到对方。KXm三元九运,九紫离火运-九紫运


KXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运


KXm三元九运,九紫离火运-九紫运

优点:KXm三元九运,九紫离火运-九紫运

1结构清晰,职责划分清晰
KXm三元九运,九紫离火运-九紫运

2模块间充分解耦KXm三元九运,九紫离火运-九紫运

3在 MVP 的基础上,MVVM 把 View 和 ViewModel 也进行了解耦KXm三元九运,九紫离火运-九紫运

缺点:定位问题困难KXm三元九运,九紫离火运-九紫运

结尾:KXm三元九运,九紫离火运-九紫运

        从MVC到MVP再到MVVM,这是一个不断进步的过程,后两者都是在MVC基础上发展而来,使用起来更加方便。这三者主要的区别在于除Model层和View层之外的第三层的不同。KXm三元九运,九紫离火运-九紫运

KXm三元九运,九紫离火运-九紫运

阅读原文

KXm三元九运,九紫离火运-九紫运

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:MVC、MVP、MVVM模式的概念与区别发布于2024-04-01 12:02:29