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




