安卓 框架模式——MVC、MVP、MVVM

一、MVC

1、MVC介绍

MVC全名是Model是模型(model) 、View视图(view)、 Controller控制器(controller),是一种框架模式

Model:模型层,负责处理数据的加载或存储。
View:视图层,负责界面数据的展示,与用户进行交互。
Controller:控制器层,负责逻辑业务的处理。

2、MVC流程、实现方式

mvc
1.View接受用户的请求,然后将请求传递给Controller。
2.Controller进行业务逻辑处理后,通知Model去更新。
3.Model数据更新后,通知View去更新界面显示。

3、MVC关系

一个模型可以有多个视图,一个视图可以有多个控制器,一个控制器也可以有多个模型

4、MVC的优点

视图层(View)与模型层(Model)解偶,通过Controller来进行联系。
模块职责划分明确。主要划分层M,V,C三个模块,利于代码的维护

5、MVC的缺点

Android中使用了Activity来充当Controller,但实际上一些UI也是由Activity来控制的,因此部分视图就会跟Controller捆绑在同一个类了。所以,Activity就不堪重负。

MVC还有一个重要的缺陷就是View跟Model是有交互的,没有做到完全的分离,这就会产生耦合

二、MVP

1、MVP介绍

MVP全名是Model-View-Presenter,MVP 是从经典的模式MVC演变而来的

Model:模型层,负责处理数据的加载或存储。与MVC中的M一样。
View:视图层,负责界面数据的展示,与用户进行交互。与MVC中的V一样。
Presenter:负责逻辑业务的处理。跟MVC中的C有所区别。

2、MVP流程、实现方式

mvp
1.View接受用户的请求,然后将请求传递给Presenter。
2.Presenter进行业务逻辑处理,修改Model。
3.Presenter通知View去更新界面显示。

3、MVP关系

通常View与Presenter是一对一的,但复杂的View可以绑定多个Presenter来处理逻辑

4、MVP的优点

View与Model完全分离,我们可以修改视图而不影响模型。
可以更高效地使用模型,因为所有的交互都发生Presenter中。
Presenter与View的交互是通过接口来进行的,有利于添加单元测试。

5、MVP的缺点

页面逻辑复杂的话,相应的接口也会变多,增加维护成本。可以定义一些基类去分离一些公共的逻辑

6、MVP和MVC的区别

最主要的区别就是MVP中View与Model并不直接交互,而在MVC中View可以与Model直接交互

三、MVVM

1、MVVM介绍

MVVM全名是Model-View-ViewModel,MVVM可以看作MVP的升级版

Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。
View:视图层,负责界面数据的展示,与用户进行交互。与MVP中的V一样。
ViewModel:视图模型,负责完成View于Model间的交互,负责业务逻辑。

2、MVVM流程、实现方式

mvvm
1.View与ViewModel进行绑定,能够实现双向的交互。一方改变时另一方也会随之改变。
2.ViewModel进行业务逻辑处理,通知Model去更新。
3.Model数据更新后,把新数据传递给ViewModel。

3、MVVM的优点

相比于MVP,Presente与View存在耦合。ViewModel与View的耦合则更低,ViewModel只负责处理和提供数据,UI的改变,比如TextView 替换 EditText,ViewModel 几乎不需要更改任何代码,只需专注于数据处理就可以了。
View Model里面只包含数据和业务逻辑,没有UI的东西,方便单元测试。

4、MVVM的缺点

数据绑定使得程序较难调试,界面出现异常时,有可能是 View 的代码有问题,也可能是 Model 的代码有问题。由于数据绑定使得数据能够快速传递到其他为止,因此要定位出异常就比较有难度了

5、MVP和MVVM的区别

ViewModel与View绑定后,ViewModel与View其中一方的数据更新都能立即通知到对方;Presenter需要通过接口去通知View进行更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值