什麽是MVC框架? 如何用UML建模?

MVC模式的架构元件被设计用来处理开发中的应用程序的不同方面。MVC设计模式的作用是将表现层与业务逻辑分开。

为什麽开发人员关心MVC?MVC在应用和网路开发中很受欢迎,它是应用和网路开发中最广泛使用的软件设计模式之一。模型-检视-控制器设计模式将关注点分成3个桶。

  • 模型 (Model)
  • 视图 (View)
  • 控制器 (Controller)

模型视图控制器架构模式将关注点分为 3 个桶之一:

  1. 模型存储和管理数据。

    通常是数据库,在我们的快速示例中,我们将使用浏览器上的本地 Web 存储来说明这个概念。

  2. 视图图形用户界面

    视图是数据的可视化表示,如图表、图表、表格、表格。

    视图包含直接与用户交互的所有功能——比如单击按钮或输入事件。

  3. 控制器应用程序的大脑。

    控制器连接模型和视图。控制器将来自视图的输入转换为需求以检索/更新模型中的数据。

    控制器从视图接收输入,使用逻辑将输入转换为模型的需求,模型抓取数据,控制器将数据从模型传递回视图,以便用户在一个漂亮的显示中看到。

MVC 的好处

  • 传统上用於图形用户界面 (GUI)
  • 在网络应用程序中流行
  • MVC 职责在客户端和服务器之间划分,兼容 Web 应用程序架构
  • MVC 是规划开发时有用的设计模式
    -- 松耦合
  • 移除不必要的依赖
  • 无需修改即可重复使用
  • MVC 使模型类无需修改即可重用
  • 代码重用
  • 可扩展代码
  • 高凝聚力
  • 更易於维护或修改
  • 支持多个视图
  • 每个部分都可以独立测试(模型、视图、控制器)

MVC 框架的目的

如上所述,MVC 软件框架帮助我们分离应用程序的不同方面(输入逻辑、业务逻辑和 GUI),同时提供这些元素之间的松散耦合。因此,信息(最可重用)逻辑属於模型,GUI 属於视图。输入逻辑属於控制器。这种分离有助於您在构建应用程序时管理复杂性,因为它使您能够一次专注於实现的一个方面。MVC 框架是一个好主意,原因有很多,包括:

  • 同时开发——因为 MVC 将应用程序的各个组件解耦,开发人员能够在不同组件上并行工作,而不会相互影响或阻塞。
  • 可重用性——一个应用程序的相同(或相似)视图可以重构为具有不同数据的另一个应用程序,因为视图只是处理如何向用户显示数据。
  • 改进的可扩展性——如果您的应用程序由於数据库访问速度慢而开始出现性能问题,您可以升级运行数据库的硬件而不影响其他组件
  • 低耦合——MVC 框架的本质是模型、视图或控制器之间的低耦合。
  • 更好的可扩展性——由於组件之间的依赖性较低,因此对一个组件进行更改(修复错误或更改功能)不会影响另一个组件

使用 MVC 序列图开发用例场景

您可以对 MVC 序列图中的生命线使用构造型,以直观地清楚您在 MVC 中使用的对像类型。一个MVC序列图有接口对象、控制器对象和实体对象:

  • 实体是表示系统数据的对象:客户、产品、交易、购物车等。
  • 边界是与系统参与者交互的对象:UserInterface、DataBaseGateway、ServerProxy 等。
  • 控件是介於边界和实体之间的对象。控制器对象通常对应於用例场景,并且通常由序列图表示。

MVC 元素之间的关系

这是 MVC 的简单和假设的序列图。您在此图中看到的是,Web 用户发起了一个查询并生成了一个事件,该事件由控制器处理并从模型中获取所需的信息,验证信息并将结果集传递回视图。

MVC 序列图示例

示例 MVC 序列图

假设有一个应用程序可以让您搜索人员。UI 必须有一个文本字段,用户可以在其中输入搜索字符串,并且它可能有一个按钮来开始搜索。最後,它必须有一个显示搜索结果的区域。在我们的例子中,它是用一个列表组件实现的。

“搜索人员”用例场景是:

  • 用户在文本字段中输入搜索字符串
  • 用户单击搜索按钮。
  • 搜索结果显示在结果列表中。

MVC 序列图示例

上面的序列图显示了用户的按钮单击如何在应用程序中移动,直到结果最终显示在列表组件中。

UML Modeling Resource and Diagramming


<<:  python入门学习day 3

>>:  【学习笔记】Git 基础指令及原理

连续 30 天 玩玩看 ProtoPie - Day 10

今天要来进行使用者点击之後跳到下一页的行为,一样延续昨天使用的介面。 所以我们选择下方的按钮(Ge...

二、教你怎麽看source code,找到核心程序码 ep.20:总结一下第二篇每个ep在介绍什麽

文章说明 文章分段 文章说明 deeplab的简单介绍、於我的意义 ep.1 tensorflow的...

大共享时代系列_009_共享农场

有没有想过除了从菜市场、超级市场买菜以外,试着跟人在离家不远的农场,共享农作、畜牧来获取需求的天然的...

Day 21 LeetCode 198. House Robber

当想不到今天要做什麽时就来解 LeetCode。 You are a professional ro...

资料流程图 Data Flow Diagram

Data Flow Diagram (DFD) ,是资料流图,最主要的概念就是在表示资料的流程,这个...