MVC、MVP、MVVM的理解

MVC
M->Model,主要功能是数据请求等业务处理;
V->View,Activity和Fragment;
C->Controller,核心业务层,也在Activity和Fragment中;
在这里插入图片描述

传统的开发模式,优点是文件小,主要写一个xml布局文件和Activity/Fragmeng控制层以及一个网络请求封装工具类就可以了,但这就会导致一个十分严重的问题,代码臃肿,因为所有的核心业务,实现逻辑都在Controller层,因此一些业务复杂的页面,Activity/Fragment的代码上几百行甚至几千行,后期维护成本非常高;另外,Model和View层也有关联(数据请求回来后渲染数据到页面),这就导致了三者之间的耦合度非常高,不利于后面的人开发和维护,代码的可读性也低。

MVP
M->Model,主要功能是数据请求等业务处理;
V->View,Activity和Fragment;
P->Presenter,View和Model的桥梁,封装数据的请求方法和将请求返回的数据处理成View需要的格式;
在这里插入图片描述

MVP开发模式的本质是通过Presenter这个角色处理Model和View之间的关系,降低了一层耦合,有以下几个特点:
1、Model只负责业务数据的请求,这和MVC是一样的,View只负责渲染数据,但Model和View之间没有任何的交集;
2、Presenter就负责数据的逻辑处理,View和Presenter也是没有直接关联的,而是通过定义好的接口进行交互的,其实现逻辑如下:在View层中,有一个Presenter成员变量,同时View需要实现一个接口,这样可以将View层中需要的业务逻辑操作通过Presenter成员接口转交给Presenter来实现,进而Presenter通过Model得到相应的数据,并通过View层实现的接口返回到View中。这样View层和Model层的耦合就解除了,同时也将业务逻辑从View中抽离出来,转移到Presenter中,避免了Activity或Fragment过度臃肿,充斥大量业务逻辑代码;
3、Model层只是单纯的数据请求业务,可以用于多个View;
4、MVP各个角色都有自己的工作,且工作明确,耦合度低,易于管理,方便测试,但是有一个比较突出的缺点,MVP中的Presenter和View使用的接口的方式连接两层,如果逻辑复杂的页面,接口会很多,会导致维护接口的成本大。

MVVM
M->Model,主要功能是数据请求等业务处理;
V->View,Activity和Fragment;
VM->ViewModel,实现Presenter的功能,但他和View之间是被观察者和观察者的关系;
在这里插入图片描述

MVVM和MVP的最大区别是ViewModel和View之间不再是通过接口实现交互,而是被观察者和观察者的关系,其功能如下:
1、View触发事件后,会通知ViewModel进行数据请求;
2、Model数据拿到后,ViewModel会通过LiveData通知View进行更新;
3、谷歌发布的DataBinding可以实现ViewModel数据直接渲染到xml中;

MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码。 1. MVC(Model-View-Controller): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Controller(控制器):处理用户输入,并根据输入更新模型和视图。 在MVC中,模型和视图是相互独立的,通过控制器来协调数据的更新和视图的更新。用户的输入首先由控制器处理,然后控制器更新模型的状态,最后模型的变化会反映在视图上。MVC模式可以有效地分离应用程序的逻辑和界面。 2. MVP(Model-View-Presenter): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Presenter(展示器):作为View和Model之间的中间人,处理用户输入并更新模型和视图。 在MVP中,Presenter负责处理用户的输入,并根据输入更新模型和视图。View只负责显示数据和将用户输入传递给Presenter,而不直接与模型交互。这种分离使得视图和模型可以独立开发和测试。 3. MVVM(Model-View-ViewModel): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - ViewModel(视图模型):作为View和Model之间的中间人,处理视图的状态和行为,并将数据从模型转换为视图可用的形式。 在MVVM中,视图通过绑定(数据绑定)与视图模型关联,当模型的状态发生变化时,视图模型会自动更新视图。这种双向绑定使得视图和模型始终保持同步,减少了手动更新视图的代码量。 总结来说,MVCMVPMVVM都是用于组织和管理应用程序的代码,它们都有各自的优势和适用场景。选择哪种架构模式取决于应用程序的需求、团队的技术背景和个人偏好。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路上的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值