Android 中MVC,MVP,MVVM三者框架对比介绍

1.什么是MVC应用框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

1.1数据关系
(1) View 接受用户交互请求

(2) View 将请求转交给Controller

(3) Controller 操作Model进行数据更新

(4) 数据更新之后Model通知View更新数据变化

(5)View 更新变化数据

1.2方式:单向通信

在这里插入图片描述

1.3优点
(1) 耦合性降低,MVC本质是分层耦合,减少代码之间的相互影响。

(2) 可扩展性好,由于耦合性低,在增加需求时,改动小,bug出现的机率小。

(3) 有利于代码的维护,MVC三层分工明确,模块职能划分明确。

1.4缺点
随着项目的增大,Activity/Fragment的代码会变得臃肿。

1.5适用场景
适合功能较少,业务逻辑简单,界面不复杂的小型项目

2.什么是MVP应用框架

MVP的全称为Model-View-Presenter,分别代表项目中3个不同的模块

模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;
视图(View):负责界面数据的展示,与用户进行交互;
主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。

2.1数据关系
(1) View 接收用户交互请求

(2) View 将请求转交给 Presenter

(3) Presenter 操作Model进行数据更新

(4) Model 通知Presenter数据发生变化

(5) Presenter 更新View数据

2.2方式:双向通信

在这里插入图片描述

当业务层处理完成后,需要在view层进行回调。有两种方法:
第一种:fragment、Activity中new出presenter时,一般通过presenter的构造方法把this传进去,当业务层处理完成后就能调到Fragement或者Activity中的方法了。
第二种:通过接口回调的形式实现,fragment或者Activity实现某个View层接口,同样需要在presenter的构造方法传入this。在presenter调用该接口的方法

2.3优点
(1) Model与View完全分离,修改互不影响

因为所有的逻辑交互都发生在一个地方Presenter内部,减少了Model与View层之间的耦合度。

(2) Model层可以封装复用,可以极大的减少代码量。

(3) 一个Preseter可用于多个View,而不需要改变Presenter的逻辑(因为View的变化总是比Model的变化频繁)。

(4) 便于测试。把逻辑放在Presenter中,就可以脱离用户接口来测试逻辑(单元测试)

2.4缺点
随着业务逻辑的增加,一个页面可能会非常复杂,UI 的改变是非常多,造成 View 的接口会很庞大,Presenter层的代码也会越来越臃肿。

2.5适用场景
对于业务很复杂的大型APP来说,过多的Model ,View, Presenter,就会造成视觉疲劳,不利于维护和管理;对于业务很简单的小型APP来说,只需要几个类就可以解决的事情,使用MVP会多出一大堆接口,虽然代码层次清晰了,但开发成本变高了。所以MVP适合不大也不小的项目。

3.什么是MVVM应用框架

MVVM 是 Model-View-ViewModel 的简写。它是 MVP的改进版,解决MVP的不足。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

模型层 (Model):负责从各种数据源中获取数据;

视图层 (View):在 Android 中对应于 Activity 和 Fragment,用于展示给用户和处理用户交互,会驱动 ViewModel 从 Model 中获取数据;

ViewModel 层:用于将 Model 和 View 进行关联,我们可以在 View 中通过 ViewModel 从 Model 中获取数据;当获取到了数据之后,会通过自动绑定,将结果自动刷新到界面上。可以使用官方的架构组件 LiveData、DataBinding 去实现 MVVM架构。 例如DataBindin架构组件会把ViewModel绑定到 XML文件中,保证View中的数值来源都是来自ViewModel,降低布局和逻辑的耦合性。

3.1数据关系
(1) View 接收用户交互请求

(2) View 将请求转交给ViewModel

(3) ViewModel 操作Model数据更新

(4) Model 更新完数据,通知ViewModel数据发生变化

(5) ViewModel 更新View数据

3.2方式:双向绑定。View/Model的变动,只要改其中一方,另一方都能够及时更新到
在这里插入图片描述

3.3优点
(1) 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

(2) 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。

(3) 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。

(4) 可测试。界面向来是比较难测试的,而现在测试可以针对ViewModel来写。

3.4缺点
bug不好找,比如界面异常,有可能是View出错,也有可能是ViewModel的业务逻辑有问题,也有可能是Model的数据出错。对于过大的项目,数据绑定会导致内存开销大,而对于简单的项目,使用MVVM有点大材小用。

3.5适用场景
虽然MVVM兼容当下使用的 MVC/MVP 框架。但是不适用于简单的界面和太过复杂的界面。对于简单界面而言,MVVM反而使逻辑复杂化了,对于复杂界面而言,相对应的ViewModel的构建和维护成本就会变的很高。

4.ViewModel生命周期

在这里插入图片描述

这张ViewModel生命周期图是谷歌官方提供的,从这上面显示Activity在横竖屏旋转重建时ViewModel也是一直存在内存中的。

5.MVC,MVP,MVVM三者演化

在这里插入图片描述

6.MVP和MVC的最大区别

在MVP中View并不直接使用Model,它们之间的通信是通过Presenter 来进行的,所有的交互都发生在Presenter内部,而在MVC中View直接从Model中读取数据而不是通过 Controller。

7.如何选取框架

一句话:没有最好,结合项目本身哪个合适用哪个!

今天的分享结束了,再见~

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: MVCMVPMVVM 是三种设计模式,用于在 Android 应用程序组织代码。 MVC(模型-视图-控制器):模型存储应用程序数据,视图显示数据,控制器处理用户交互。 MVP(模型-视图-presenter):与 MVC 类似,但 presenter 更加紧密地与视图绑定,负责更新视图。 MVVM(模型-视图-视图模型):与 MVP 类似,但视图模型与视图绑定,负责将数据转换为视图可用的形式。 三者的差异在于MVC会产生视图和模型之间的耦合,MVPMVVM是将视图和模型之间的耦合分离,更加灵活。 ### 回答2: Android开发MVCMVPMVVM都是常见的架构模式,用来组织Android应用的代码结构,让代码更加规范、易于维护。 MVC(Model-View-Controller)是最早的一种架构模式,它将应用分为三个模块:模型(Model)、视图(View)和控制器(Controller)。其模型负责数据的存储和操作,视图负责显示界面,控制器则负责对用户输入进行响应,协调模型和视图之间的关系。MVC模式的优点是结构清晰,各个模块职责分明,易于实现代码复用,因此广泛应用。但是MVC模式也有一些缺点,比如控制器很难进行单元测试,代码复杂度较高,难以维护大型项目等问题。 MVP(Model-View-Presenter)是一种基于MVC模式的改进,它将模型和视图分离,通过在间加上Presenter来连接两者。Presenter接受用户的输入,并根据视图的状态更新数据模型,然后更新视图显示。MVP模式的优点是易于单元测试,将业务逻辑和界面分离,代码复杂度较低,易于维护。但是对于大型项目,Presenter层也会变得庞大且复杂。 MVVM(Model-View-ViewModel)是一种结合数据绑定和命令模式的前端设计模式,它将模型、视图和ViewModel分开,通过数据绑定将视图和ViewModel联系起来。ViewModel封装了视图的状态和行为,当ViewModel被修改时,视图会自动更新。MVVM模式的优点是将视图和ViewModel解耦,通过数据绑定自动更新视图,提高了代码的可重用性。但MVVM模式需要使用大量的数据绑定,可能导致系统卡顿,同时实现较为复杂。 总的来说,MVCMVPMVVM这三种模式都有各自的适用场景。在小型项目,可以使用MVC模式;在型项目,可以使用MVP模式;在大型项目,可以使用MVVM模式。选择合适的架构模式能够让代码更易于维护,提高开发效率。 ### 回答3: Android是一种以Java为基础的开源操作系统,广泛应用于移动设备。在开发Android应用程序时,常用的三种架构模式是MVCMVPMVVMMVC是一种典型的应用程序架构模式,其M代表模型,V代表视图,C代表控制器。在AndroidMVC通常用规定ViewController或Activity来实现。 MVP是Model-View-Presenter的缩写,其M代表模型,V代表视图,P代表演示者。MVP将视图项分离,并引入间者Presenter,以实现界面和业务逻辑分离的目的。在AndroidMVP通常实现在Activity或Fragment上。 MVVM是Model-View-ViewModel的缩写,其M代表模型,V代表视图,VM代表视图模型。ViewModel担任间件角色,处理视图的数据,并使控制逻辑与视图分离开。在AndroidMVVM通常实现了Data Binding。 总的来说,三种架构模式都旨在将应用程序分离成各个组成部分,每个部分具有各自分离的职责,在开发Android应用程序时选择合适的架构模式,能够提高开发效率、提高代码质量、降低维护成本、提高整个应用程序的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值