Android系统中MVP和MVVM架构模式的区别
admin
2023-07-30 20:17:51
0

通过应用软件架构模式来开发安卓应用,总是被开发者所青睐。架构模式为项目文件提供了模块化,并确保所有的代码在单元测试中得到覆盖。它使开发人员很容易维护软件,并在未来扩展应用程序的功能。MVP(Model – View – Presenter)和Model – View – ViewModel(MVVM)是开发者中最流行的两种业界公认的安卓架构。

模型-视图-展示者(MVP)模式

MVP架构模式为项目代码的结构提供了一种简单的方法。MVP被广泛接受的原因是它提供了模块化、可测试性,以及一个更干净和可维护的代码库。它由以下三个部分组成。

  • 模型:用于存储数据的层。它负责处理领域逻辑(现实世界的业务规则)以及与数据库和网络层的通信。
  • 视图:UI(用户界面)层。它提供数据的可视化,并跟踪用户的动作,以便通知演示者。
  • 展示器:从模型中获取数据并应用UI逻辑来决定显示什么。它管理View的状态,并根据用户从View的输入通知采取相应的行动。

模型-视图-ViewModel(MVVM)模式

MVVM模式与MVP(Model – View – Presenter)设计模式有一些相似之处,因为Presenter角色是由ViewModel扮演的。然而,MVVM已经解决了MVP模式的缺点。它建议将数据表现逻辑(视图或用户界面)与应用程序的核心业务逻辑部分分开。MVVM的独立代码层是。

  • 模型:这一层负责数据源的抽象化。模型和ViewModel一起工作来获取和保存数据。
  • 视图:这一层的目的是通知ViewModel关于用户的操作。该层观察ViewModel,不包含任何类型的应用逻辑。
  • 视图模型:它暴露了那些与视图相关的数据流。此外,它作为模型和视图之间的链接。

MVP和MVVM设计模式的区别

MVP(Model View Presenter) MVVM(Model View ViewModel)
MVP通过使用Presenter作为Model和View之间的通信通道,解决了有一个依赖性View的问题。 这种架构模式是更多的事件驱动,因为它使用数据绑定,从而使核心业务逻辑与视图容易分离。
在Presenter和View之间存在一对一的关系。 多个视图可以被映射到单个ViewModel中。
演示者拥有关于视图的知识。 ViewModel没有对View的引用。
模型层将用户输入的响应返回给Presenter,Presenter将其转发给View。 根据用户的输入执行操作后,Model层将响应返回给View。
Presenter处理应用程序的流程,View是实际的应用程序。 ViewModel是实际的应用程序,View是用户与应用程序交互的界面。
项目文件将包含更多的类以及代码。 项目文件将包含更多的类,但每个类的代码较少。
对于简单和复杂的应用程序来说是理想的。 对于小规模的项目来说并不理想。
很容易进行单元测试,但View和Presenter的紧密结合会使其略显困难。 在这个架构中,单元测试能力是最高的。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 常见... 什么是 Apache Doris Apache Doris 是一款 MPP 架构的 OLAP 列式存...
Vmware简易安装ubunt... 大晚上的折腾死我了VMware安装ubuntu,用简易安装结果设置的用户名密码死活进不去再重装一次,...
‘WebDriver‘ obj... selenium库报错"‘WebDriver’ object has no attribute ‘f...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
WiFi中继器和WiFi扩展器... WiFi中继器以无线方式连接到 WiFi 网络并重新广播信号。它就像一个中继系统,连接到我们的 Wi...