MV* 架构

MVC

模型

负责应用程序的业务逻辑。

  • 持久化应用程序状态:与数据库通信。
  • 数据管理:数据验证、读取和写入数据。

视图 (View)

视图代表 UI 组件,例如 jQuery、HTML、CSS 等。

  • 向用户展示数据。

控制器

建立视图和模型之间的关系。

  • 包含核心应用程序逻辑。
  • 获取用户响应通知。
  • 根据需要更新模型。

MVP

模型

负责应用程序的业务逻辑。

  • 持久化应用程序状态:与数据库通信。
  • 数据管理:数据验证、读取和写入数据。

视图 (View)

视图代表 UI 组件,例如 jQuery、HTML、CSS 等。

  • 向用户展示数据。
  • 处理用户交互。

Presenter

  • 从视图获取输入。
  • 借助模型处理数据。
  • 处理完成后将结果传回视图。

MVVM

模型

负责应用程序的业务逻辑。

  • 持久化应用程序状态:与数据库通信。
  • 数据管理:数据验证、读取和写入数据。

视图 (View)

视图代表 UI 组件,例如 jQuery、HTML、CSS 等。

  • 向用户展示数据
  • 处理用户交互。

ViewModel

为...提供功能、方法和命令

  • 维护视图状态
  • 操作模型
  • 激活视图本身的事件

目标

这些架构的目的是将 UI 应用程序的可视化、处理和数据管理职责分开。

它们的目标是提高

  • 模块化
  • 灵活性
  • 可测试性
  • 可维护性

比较

性能评估

在测试 UI 性能时,MVP 在渲染帧方面具有最高的可靠性和最低的阻碍。MVVM 中的数据绑定会产生额外的开销,在执行复杂任务时可能会严重影响其性能。

兼容性

在测试模式的兼容性时,MVVM 是最优秀的,因为它具有数据绑定,产生了积极影响。MVP 的表现优于 MVC,而 MVC 则存在严重的重绘问题。

可修改性

当我们谈论设计模式时,显然它应该是可修改的,因为这给了我们向应用程序添加新功能和策略的选项。

  • 基于这些因素,我们观察到 MVP 和 MVVM 的改动非常少,其中 MVVM 对可维护性贡献很大。
  • MVC 在大多数情况下会增加改动。

参考

在 MVC 中,视图不引用控制器;在 MVP 中,视图引用演示者;在 MVVM 中,视图引用视图模型。

入口点

对于 MVC,应用程序的入口点是控制器;而对于 MVP 和 MVVM,入口点是视图。

单一职责原则

  • MVC 不遵循模块化和单一职责原则。
  • MVP 和 MVVM 都遵循模块化和单一职责原则。

单元测试

  • MVC 对单元测试的支持有限。
  • 单元测试容易进行,但视图和演示者的紧密耦合会使 MVP 略显困难。
  • MVVM 的单元测试性最高。

Evax 移动应用实现

在比较了这三种架构后,我们发现 MVP 和 MVVM 在性能和可修改性方面远优于 MVC。
关于 MVP 和 MVVM,两者都适合我们的应用程序。然后我们判断,我们的应用程序不够复杂,不需要引入 MVVM 实现所带来的额外工作/难度。因此,我们选择使用 MVP 架构。

用例 1:更新电话号码

用例 1:添加和删除孩子

参考

bacancytechnology.com
geekforgeeks.org
levelup.gitconnected.com
medium.com

GitHub

查看 Github