MVC

MVC(Model-View-Controller)主要是做到了关注点分离

1. 组件概述

  • Model(模型)

    • 代表应用程序的数据和业务逻辑

    • 负责数据的获取、存储和管理,通常与数据库或外部API进行交互。

    • 不直接与用户界面交互,所有的状态和业务逻辑都集中在这里。

  • View(视图)

    • 负责显示数据并向用户呈现界面。

    • 接收用户输入并将其传递给Controller进行处理。

    • 应用程序的表现层,通常使用模板引擎或UI框架构建。

  • Controller(控制器)

    • 作为Model和View之间的中介处理用户输入并更新Model和View

    • 接收来自View的输入,调用Model更新数据,然后更新View以反映这些变化。

    • 负责业务逻辑决定数据如何被展示和处理

2. 数据流

MVC模式通常遵循以下数据流:

  1. 用户与View交互(例如,点击按钮、输入数据)。

  2. View将用户输入传递给Controller。

  3. Controller处理用户输入,可能会调用Model来获取或更新数据。

  4. Model更新其状态并通知Controller。

  5. Controller根据Model的变化更新View。

  6. View重新渲染以显示更新后的数据。

3. 特点

  • 关注点分离:MVC通过将应用程序的业务逻辑、数据和用户界面分离,提高了代码的可读性和可维护性。

  • 灵活性:不同的View可以使用相同的Model,允许开发者在不影响业务逻辑的情况下更改用户界面。

  • 可测试性:由于Controller与View分离,业务逻辑可以更容易地进行单元测试。

4. 适用场景

  • Web应用程序:MVC是许多Web框架(如Ruby on Rails、ASP.NET MVC、Django)使用的架构模式。

  • 桌面应用程序:MVC也常用于桌面应用程序,特别是在需要清晰分离界面和业务逻辑的情况下。

5. 根据Model来划分 ——主动模式被动模式

  • 被动模式不会主动将它的变化通知给View进行更新,而是由Controller更新View关于Model的变化; 而且只有Controller可以对Model进行更新;

  • 主动模式Model的修改会通知View更新,利用观察者模式:View为观察者,Model为被观察者。 在Web端,传统意义上的MVC是主动模式; 而在移动端,对数据变化频繁的场景,可以应用MVC的主动模式。

Last updated