MVC
MVC(模型-视图-控制器)是软件设计中的一种模式,通常用于实现用户界面、数据和控制逻辑。它强调软件业务逻辑和显示之间的分离。这种“关注点分离”提供了更好的劳动分工和改进的维护性。一些其他设计模式基于MVC,例如MVVM(模型-视图-视图模型)、MVP(模型-视图-呈现器)和MVW(模型-视图-任何东西)。
MVC软件设计模式的三个部分可以描述如下
- 模型:管理数据和业务逻辑。
- 视图:处理布局和显示。
- 控制器:将命令路由到模型和视图部分。
模型视图控制器示例
想象一个简单的购物清单应用程序。我们想要的只是我们需要在本周购买的每个商品的名称、数量和价格的列表。下面我们将描述如何使用MVC实现其中一些功能。
模型
模型定义了应用程序应包含哪些数据。如果此数据的状态发生更改,则模型通常会通知视图(以便显示可以根据需要更改)并且有时会通知控制器(如果需要不同的逻辑来控制更新的视图)。
回到我们的购物清单应用程序,模型将指定列表项应包含哪些数据——商品、价格等——以及哪些列表项已存在。
视图
视图定义了应用程序的数据应如何显示。
在我们的购物清单应用程序中,视图将定义如何向用户呈现列表,并从模型接收要显示的数据。
控制器
控制器包含响应应用程序用户的输入更新模型和/或视图的逻辑。
例如,我们的购物清单可以有输入表单和按钮,允许我们添加或删除商品。这些操作需要更新模型,因此输入发送到控制器,然后控制器根据需要操作模型,然后模型将更新的数据发送到视图。
但是,您可能也只想更新视图以以不同的格式显示数据,例如,将商品顺序更改为字母顺序或从最低到最高价格。在这种情况下,控制器可以直接处理此问题,而无需更新模型。
网页上的 MVC
作为 Web 开发人员,即使您以前从未有意识地使用过此模式,此模式也可能非常熟悉。您的数据模型可能包含在某种类型的数据库中(无论是传统的服务器端数据库(如 MySQL),还是客户端解决方案(如IndexedDB [en-US])。您的应用程序控制代码可能使用 HTML/JavaScript 编写,并且您的用户界面可能使用 HTML/CSS/您喜欢的任何其他内容编写。这听起来非常像 MVC,但 MVC 使这些组件遵循更严格的模式。
在 Web 的早期,MVC 架构主要在服务器端实现,客户端通过表单或链接请求更新,并接收更新的视图以在浏览器中显示。但是,如今,随着客户端数据存储的出现以及Fetch API 能够根据需要进行部分页面更新,更多的逻辑被推送到客户端。
另请参阅
- 模型-视图-控制器 在维基百科上