Android系统中MVP和MVVM架构模式的区别
通过应用软件架构模式来开发安卓应用,总是被开发者所青睐。架构模式为项目文件提供了模块化,并确保所有的代码在单元测试中得到覆盖。它使开发人员很容易维护软件,并在未来扩展应用程序的功能。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的紧密结合会使其略显困难。 | 在这个架构中,单元测试能力是最高的。 |