一文搞懂Android架构MVC、MVP、MVVM该怎么选


一、MVC

MVC由三个部分组成:Model、View、Controller。其中Model表示程序的状态和数据,View负责数据的展示,Controller响应用户的动作并更新View和Model。在Android中Controller一般为Activity。整体流程大致为View 接收用户的操作并将操作反馈给 Activity,Activitiy 去Model中获取数据,数据通过观察者模式刷新给 View。

使用方法:

MVC架构将应用程序分为三个组件:

  1. Model(模型):表示应用程序的数据和状态,模型包含应用程序的逻辑和数据。
  2. View(视图):负责显示模型的数据和状态。
  3. Controller(控制器):响应用户的动作并更新视图和模型。控制器从视图获取事件并处理业务逻辑,然后再将结果传递回视图进行显示。

在Android中实现MVC的方法:

  1. 创建模型:创建一个表示应用程序数据和状态的类。
  2. 创建视图:创建一个表示用户界面的类。
  3. 创建控制器:创建一个控制器类,它连接模型和视图并响应用户交互事件。

结构图:
在这里插入图片描述

其中,Model、View和Controller之间都是相互独立的,互不影响。Controller负责处理View和Model的交互,View负责UI交互操作,Model存储数据状态,主要承担业务逻辑的处理。

优点:

  1. 易于理解和实现:MVC架构是最基本的应用程序架构,易于理解和实现。
  2. 分层结构:MVC 将应用程序分为三个部分,让开发人员可以更好地组织代码并实现可复用组件。
  3. 单一职责原则:MVC的每个组件都有单一职责,使得维护和修改变得简单。

缺点:

  1. 视图和控制器之间的紧耦合:在MVC中,视图和控制器之间通常是紧耦合的,这可能导致代码难以重用和测试。
  2. 模型和控制器之间的紧耦合:在MVC中,模型和控制器之间通常也是紧耦合的,这可能会导致业务逻辑复杂。

二、MVP

MVP是MVC架构的变种,将Controller变成Presenter,并且使用接口隔离试图和Presenter之间的依赖,Presenter从View获取事件并处理业务逻辑,然后再将结果传递给View进行显示。PV,PM 双向依赖。View跟Model层不直接进行交互。

使用方法:

  1. 创建View接口:定义一个接口,表示视图和Presenter之间的通信。
  2. 创建Presenter类:创建一个类,实现Presenter接口,并处理视图与模型之间的联系。
  3. 实现View接口:创建一个类实现View接口,并将其传递给Presenter。
  4. 创建Model类:创建一个表示应用程序数据和状态的类。

结构图
在这里插入图片描述

其中,View、Presenter和Model之间的关系是松耦合的,Presenter负责调节View和Model的交互,View负责界面的展示,Model存储数据状态,主要承担业务逻辑的处理。

优点:

  1. 易于单元测试:MVP将业务逻辑从视图中分离出来,使得单元测试变得更容易。
  2. 界面和业务逻辑分离:MVP允许开发人员将界面和业务逻辑分开,提高了代码的复用性和可维护性。
  3. 单一职责原则:MVP遵循单一职责原则,每个组件都只负责自己的功能。

缺点:

  1. 编写代码量较大:相比MVC,MVP需要编写更多的代码。
  2. 学习曲线较陡峭:因为MVP需要理解更多的设计模式,所以学习曲线较陡峭。

三、MVVM

MVVM由三部分组成:View、ViewModel、Model,其中ViewModel是连接View和Model的桥梁。ViewModel持有View需要展示的数据,同时也负责接收用户发起的事件、处理业务逻辑和更改状态,并将更新后的状态传递给View进行展示。

使用方法:

  1. 创建View:创建一个表示用户界面的类。
  2. 创建ViewModel:创建一个类,它包含与View关联的属性和命令,并响应用户交互事件。
  3. 创建Model:创建类,它表示应用程序的数据和状态。

结构图
在这里插入图片描述

其中,View和ViewModel之间的通信是通过数据绑定机制完成的,ViewModel负责处理业务逻辑和数据,View只负责用户界面。Model与其他两个组件之间是相互独立的,存储应用程序的数据和状态。

优点:

  1. 解耦:MVVM使用数据绑定机制,解耦了视图和模型。视图和模型之间的通信通过ViewModel层完成。
  2. 代码可读性高:相比MVP,MVVM使用数据绑定机制,使得代码更加简单,易于理解和维护。
  3. 双向绑定:MVVM采用双向绑定机制,使得数据的变化可以自动反映到视图中,从而减少了冗余代码。

缺点:

  1. 学习曲线较陡峭:因为MVVM需要掌握数据绑定的概念,因此学习曲线可能会比较陡峭。
  2. 难以调试:因为数据绑定机制影响变量的实际值,会导致一些难以调试的问题。

四、总结:如何选择

MVC架构较简单,学习和上手相对容易,适合快速开发的小型应用。但是在大型复杂应用中,MVC的紧耦合会使代码难以维护。MVP弥补了MVC的不足,通过将Activity中的业务逻辑抽离出来,使得代码简洁、可读性和可维护性更好,而MVVM进一步实现了视图和业务逻辑之间的解耦,能够更好的支持数据双向绑定。
选择哪种架构取决于项目的需求、时间和预算等因素,同时需要考虑到项目的规模和开发人员的技术经验等,如果是小型应用,MVC足够简单和实用,如果是大型复杂应用,推荐使用MVP或MVVM并根据具体的需求进行选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值