MVP MVVM

image.png

Model-View-Presenter 模式

概述

MVP(Model-View-Presenter)是一种软件架构模式,通常用于构建用户界面。
MVP模式将应用程序分为三个主要部分:Model(模型)、View(视图)和Presenter(主持人)。

  1. Model(模型):
    模型负责处理数据的获取、存储和处理,通常包括数据结构、数据库操作、网络请求等。
    模型不直接与视图进行交互,而是通过Presenter来处理数据的逻辑。

  2. View(视图):
    视图负责展示数据和接收用户输入,通常是用户界面的组件,如 Activity、Fragment 或 XML 布局。
    视图不包含业务逻辑,只负责展示数据和将用户操作传递给Presenter。

  3. Presenter(主持人)控制器:
    Presenter充当模型和视图之间的中介,负责处理用户输入、更新视图和处理业务逻辑。
    Presenter从模型中获取数据,对数据进行处理后更新视图。
    Presenter不直接操作视图,而是通过接口与视图进行交互。

优缺点

MVP模式的优点包括:

  • 分离关注点:将数据处理、业务逻辑和用户界面分离,使代码更易于维护和扩展。
  • 提高可测试性:由于业务逻辑和数据处理都在Presenter中,可以更容易地编写单元测试。
  • 降低耦合度:模型、视图和Presenter之间的耦合度较低,可以独立修改和替换各个部分。

然而,MVP模式也存在一些缺点

  • 需要编写大量接口代码:为了实现模型、视图和Presenter之间的通信,需要编写大量接口代码。
  • 增加了代码量:相比于MVC模式,MVP模式需要编写更多的代码,可能会增加开发成本和复杂性。

总的来说, MVP 模式适合于大型项目或需要高度可测试性的项目,能够有效地分离关注点、降低耦合度和提高可维护性。
开发人员可以根据具体项目需求和规模来选择是否采用 MVP 模式。


P数据模型层,通过接口回调给View层,会出现接口过多的问题

Model-View-ViewModel 模式

简介

MVVM 将应用程序分为三个主要部分:模型(Model)、视图(View)和视图模型(ViewModel)。

  • 模型(Model) :模型代表应用程序的数据和业务逻辑。它负责管理数据的获取、存储和处理。

  • 视图(View) :视图是用户界面的展示部分,负责展示数据给用户,并接收用户的输入。

  • 视图模型(ViewModel):视图模型是连接模型和视图的桥梁。它负责处理视图和模型之间的通信,将模型中的数据转换为视图可以展示的格式,并处理用户输入后更新模型。

在Android开发中,MVVM 模式通常与Data Binding库一起使用,这样可以更方便地实现视图和视图模型之间的数据绑定。
通过 MVVM 模式,可以将应用程序的逻辑和界面分离,使代码更易于维护和扩展。
MVVM也有助于实现单一职责原则和解耦合,提高代码的可测试性和可复用性。

repository仓库:
数据库
文件
网络
自己数据

优缺点

优点:

  1. 分离关注点: MVVM 将数据、业务逻辑和界面分离,使代码更易于维护和扩展。
  2. 提高可测试性:由于视图模型处理业务逻辑,可以更容易地编写单元测试。
  3. 数据绑定:通过Data Binding库实现视图和视图模型之间的数据绑定,减少了手动更新UI的工作量。
  4. 代码重用:视图模型可以在不同的视图中重复使用,提高了代码的重用性。
  5. 支持响应式编程:使用LiveData或RxJava等库实现响应式编程,可以实时更新UI和数据。

缺点:

  1. 学习曲线:对于新手开发人员来说,学习 MVVM 和 Data Binding 可能需要一定的时间。
  2. 过度使用:有时候开发人员可能会过度使用 MVVM 模式,导致代码过于复杂
  3. 性能问题:数据绑定可能会影响应用程序的性能,特别是在处理大量数据或复杂UI时。
  4. 不适合小型项目:对于小型项目来说,引入 MVVM 模式可能会增加开发成本和复杂性。

总的来说,MVVM 架构模式在大型项目中表现出色,可以提高代码的可维护性和可测试性,但在小型项目中可能会显得过于繁琐。
开发人员需要根据具体项目需求和规模来决定是否采用 MVVM 架构模式。

MVVM.png
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Annie
  • Visitors: | Views:

嘿嘿 请我吃小蛋糕吧~

支付宝
微信