Android中MVC、MVP和MVVM架构模式的区别

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

模型-视图-控制器(MVC)模式

MVC模式建议将代码分成三个部分。在创建应用程序的类/文件时,开发人员必须将其分为以下三层之一。

  • 模型:这个组件存储应用程序的数据。它对接口没有了解。模型负责处理领域逻辑(现实世界的业务规则)以及与数据库和网络层的通信。
  • 视图:它是UI(用户界面)层,持有在屏幕上可见的组件。此外,它提供了存储在模型中的数据的可视化,并向用户提供交互。
  • 控制器:这个组件建立了视图和模型之间的关系。它包含了核心的应用逻辑,得到用户的响应,并根据需要更新模型。

模型-视图-演示器(MVP)模式

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

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

MVC、MVP和MVVM设计模式的区别

MVC(模型-视图-控制器) MVP(模型视图展示者) MVVM(模型-视图-模型)
最古老的软件架构之一,作为软件架构的第二次迭代而发展,是MVC的进步。 业界公认的应用程序的架构模式。
UI(视图)和数据访问机制(模型)是紧密耦合的。 它通过使用Presenter作为Model和View之间的通信渠道,解决了View的依赖问题。 这种架构模式是更多的事件驱动的,因为它使用数据绑定,从而使核心业务逻辑与视图容易分离。
控制器和视图以一对多的关系存在。一个控制器可以根据需要的操作选择不同的视图。 在Presenter和View之间存在一对一的关系,因为一个Presenter类一次管理一个View。 多个视图可以被映射到一个ViewModel上,因此,视图和ViewModel之间存在一对多的关系。
视图没有关于控制器的知识。 视图有对Presenter的引用。 视图有对ViewModel的引用
由于代码层是紧密耦合的,所以很难进行更改和修改应用程序的功能。 代码层是松散耦合的,因此很容易对应用代码进行修改/变更。 容易对应用程序进行修改。然而,如果数据绑定逻辑过于复杂,调试应用程序就会有点困难。
用户输入是由控制器处理的。 视图是应用程序的入口 视图接受用户的输入并作为应用程序的入口。
只适合于小规模的项目。 适合简单和复杂的应用。 不适合小规模的项目。
对单元测试的支持有限。 很容易进行单元测试,但视图和演示器的紧密结合会使其略显困难。 单元测试能力在这个架构中是最高的。
这个架构对Android APIs的依赖性很高。 它对Android APIs的依赖性很低。 对Android API的依赖性较低或没有依赖性。
它不遵循模块化和单一责任原则。 遵循模块化和单一责任原则。 遵循模块化和单一责任原则。