【架构模式】 - MVC,MVP,MVVM

游戏开发

MVC(Model–view–controller)

MVC模式应该是开发者最熟悉的模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC

核心

MVC 将应用程序划分为三个部分:

  • Model(模型)

    • 负责处理业务逻辑和数据存储。
    • 与数据库交互、执行数据验证、处理业务规则等。
  • View(视图)

    • 负责用户界面(UI)的展示。
    • 渲染数据、接收用户输入(如表单提交)。
  • Controller(控制器)

    • 作为 Model 和 View 的“中介”,处理用户输入并协调两者的交互。
    • 接收请求、调用 Model 处理数据、更新 View。

MVC 的工作流程

  1. 用户通过 View 触发事件(如点击按钮、提交表单)。
  2. Controller 接收请求,调用 Model 处理业务逻辑。
  3. Model 处理完成后,将结果返回给 Controller
  4. Controller 根据结果更新 View,完成界面渲染。

主要缺点

个人认为MVC模式对于现代开发最大的缺点是视图(View)和控制器(Controller)的耦合性比较大,对于需求经常变动的现代开发来说,高耦合带来很多工作量。

MVP(Model-View-Presenter)

MVP模式是电脑软件设计工程中一种对针对MVC模式,再审议后所延伸提出的一种软件设计模式。
MVP

核心

MVP模式将应用程序分为三个核心组件:

  1. Model(模型层)

    • 负责处理数据逻辑和业务规则(如网络请求、数据库操作、数据缓存等)。
    • 与View完全解耦,专注于数据的获取和处理。
  2. View(视图层)

    • 负责UI的展示和用户交互(如按钮点击、界面渲染等)。
    • 不直接处理业务逻辑,所有操作通过Presenter间接完成。
  3. Presenter(表示层)

    • 作为Model和View的“桥梁”,协调两者之间的通信。
    • 接收View的输入事件,调用Model处理数据,并将结果返回给View。

关键区别(与MVC对比)
在MVC模式中,View和Model直接交互,而MVP通过Presenter强制解耦View和Model。这种设计使得View和Model之间完全独立,降低了代码的耦合度。

MVP的工作流程

  1. 用户交互

    • 用户在View上进行操作(如点击按钮、输入文本)。
    • View将事件传递给Presenter。
  2. Presenter处理逻辑

    • Presenter接收事件后,调用Model层处理业务逻辑(如验证用户输入、请求数据)。
    • Model层完成数据处理后,将结果返回给Presenter。
  3. 更新View

    • Presenter根据Model的结果,调用View的接口方法更新UI(如显示加载状态、展示数据)。

主要缺点

个人认为MVP的缺点是引入Presenter层后,会额外增加接口和类,如果业务比较复杂,会比较难以维护

MVVM(Model-View-ViewModel)

写本篇博客的原因就是因为看到了MVVM(为了这碟醋包饺子了属于是),MVVM通过分离关注点和数据绑定机制,显著提升了代码的可维护性、可测试性和开发效率。
MVP

核心

MVVM 模式由三个核心组件构成:

  1. Model(模型)
    Model 负责管理应用程序的数据和业务逻辑,与用户界面无关。它通常包含数据访问层(如数据库操作)和业务规则(如数据验证)。Model 是独立于视图和 ViewModel 的,可以在多个应用或平台中复用。

  2. View(视图)
    View 是用户界面的展示层,负责渲染 UI 元素(如按钮、文本框等)。View 通过数据绑定与 ViewModel 交互,无需直接操作 Model,从而实现 UI 与业务逻辑的解耦。

  3. ViewModel(视图模型)
    ViewModel 是 MVVM 的核心桥梁,负责将 Model 的数据转换为 View 可用的形式,并处理用户交互逻辑。ViewModel 通过双向数据绑定(Two-way Data Binding)与 View 同步状态,确保数据变更能自动反映在 UI 上,反之亦然。

数据绑定机制

MVVM 的核心优势在于其数据绑定能力。View 和 ViewModel 之间的数据绑定是自动化的,开发者无需手动更新 UI 或修改数据。例如:

  • 当 Model 中的数据发生变化时,ViewModel 会自动更新,View 也随之刷新。
  • 当用户在 View 中输入数据时,ViewModel 会实时捕获这些变化,并更新 Model。

主要缺点

个人认为主要缺点是性能上的开销,要维护数据绑定和双向同步,但是在需求变更较大的场景下,这也是比较友好的,还有就是调试起来会麻烦一些。

参考链接

模型-视图-视图模型 - .NET | Microsoft Learn

  • 标题: 【架构模式】 - MVC,MVP,MVVM
  • 作者:
  • 创建于 : 2023-09-25 22:16:55
  • 更新于 : 2024-12-15 19:59:19
  • 链接: https://sxl-space.tk/2023/09/25/005_Architectural-Pattern/
  • 版权声明: 版权所有 © 宋,禁止转载。