MVC模式的架构元件被设计用来处理开发中的应用程式的不同方面。MVC设计模式的作用是将表现层与业务逻辑分开。
为什么开发人员关心MVC?MVC在应用和网路开发中很受欢迎,它是应用和网路开发中最广泛使用的软体设计模式之一。模型-检视-控制器设计模式将关注点分成3个桶。
模型 (Model)视图 (View)控制器 (Controller)模型视图控制器架构模式将关注点分为 3 个桶之一:
模型存储和管理数据。
通常是数据库,在我们的快速示例中,我们将使用浏览器上的本地 Web 存储来说明这个概念。
视图图形用户界面
视图是数据的可视化表示,如图表、图表、表格、表格。
视图包含直接与用户交互的所有功能——比如单击按钮或输入事件。
控制器应用程序的大脑。
控制器连接模型和视图。控制器将来自视图的输入转换为需求以检索/更新模型中的数据。
控制器从视图接收输入,使用逻辑将输入转换为模型的需求,模型抓取数据,控制器将数据从模型传递回视图,以便用户在一个漂亮的显示中看到。
MVC 的好处
传统上用于图形用户界面 (GUI)在网络应用程序中流行MVC 职责在客户端和服务器之间划分,兼容 Web 应用程序架构MVC 是规划开发时有用的设计模式-- 松耦合移除不必要的依赖无需修改即可重複使用MVC 使模型类无需修改即可重用代码重用可扩展代码高凝聚力更易于维护或修改支持多个视图每个部分都可以独立测试(模型、视图、控制器)
MVC 框架的目的
如上所述,MVC 软件框架帮助我们分离应用程序的不同方面(输入逻辑、业务逻辑和 GUI),同时提供这些元素之间的鬆散耦合。因此,信息(最可重用)逻辑属于模型,GUI 属于视图。输入逻辑属于控制器。这种分离有助于您在构建应用程序时管理複杂性,因为它使您能够一次专注于实现的一个方面。MVC 框架是一个好主意,原因有很多,包括:
同时开发——因为 MVC 将应用程序的各个组件解耦,开发人员能够在不同组件上并行工作,而不会相互影响或阻塞。可重用性——一个应用程序的相同(或相似)视图可以重构为具有不同数据的另一个应用程序,因为视图只是处理如何向用户显示数据。改进的可扩展性——如果您的应用程序由于数据库访问速度慢而开始出现性能问题,您可以升级运行数据库的硬件而不影响其他组件低耦合——MVC 框架的本质是模型、视图或控制器之间的低耦合。更好的可扩展性——由于组件之间的依赖性较低,因此对一个组件进行更改(修复错误或更改功能)不会影响另一个组件使用 MVC 序列图开髮用例场景
您可以对 MVC 序列图中的生命线使用构造型,以直观地清楚您在 MVC 中使用的对像类型。一个MVC序列图有接口对象、控制器对象和实体对象:
实体是表示系统数据的对象:客户、产品、交易、购物车等。边界是与系统参与者交互的对象:UserInterface、DataBaseGateway、ServerProxy 等。控件是介于边界和实体之间的对象。控制器对象通常对应于用例场景,并且通常由序列图表示。这是 MVC 的简单和假设的序列图。您在此图中看到的是,Web 用户发起了一个查询并生成了一个事件,该事件由控制器处理并从模型中获取所需的信息,验证信息并将结果集传递回视图。
示例 MVC 序列图
假设有一个应用程序可以让您搜索人员。UI 必须有一个文本字段,用户可以在其中输入搜索字符串,并且它可能有一个按钮来开始搜索。最后,它必须有一个显示搜索结果的区域。在我们的例子中,它是用一个列表组件实现的。
“搜索人员”用例场景是:
用户在文本字段中输入搜索字符串用户单击搜索按钮。搜索结果显示在结果列表中。上面的序列图显示了用户的按钮单击如何在应用程序中移动,直到结果最终显示在列表组件中。