MVC模式

MVC简介

  • MVC的全名是Model View Controller,是**模型(Model)-视图(view)-控制器(controller)**的缩写,是一种设计模式。
  • MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。
  • MVC模式是软件工程中常见的一种软件架构模式,该模式把软件系统(项目)分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。这种模式用于应用程序的分层开发。使用MVC的目的是将Model和View的实现代码分离,从而使同一个程序可以使用不同的表现形式。
  • MVC模式在概念上强调 Model, View, Controller 的分离,各个模块也遵循着由Controller 来处理消息,Model 掌管数据源,View负责资料显示的职责分离原则。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间,提高代码复用性。

模型(Model)

  • 模型持有所有的数据、状态和程序逻辑。模型接受视图数据的请求,并返回最终的处理结果。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。模型(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。Model 有对数据直接访问的权力,例如对数据库的访问。Model不依赖View和Controller,也就是说,Model 不关心它会被如何显示或是如何被操作。但是 Model中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model上注册,从而,View 可以了解在数据 Model 上发生的改变。
  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

视图(View)

  • 视图代表模型包含的数据的可视化,负责界面的显示,以及与用户的交互功能。视图(View)能够实现数据有目的的显示(理论上这不是必需的)。在View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
  • View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

控制器(Controller)

  • 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。用来决定对于视图发来的请求,需要用哪个模型来处理,以及处理完后需要跳回到哪一个视图,即用来连接视图和模型。控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据Model 上的改变。
  • Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC的处理过程

首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。实现人机数据之间的交互。

  • Model:model管理数据,负责数据的请求和更新
  • View:向用户展示数据
  • Controller:处理Model和View之间的交互。负责为View提供正确的数据,为Model提供来自View的操作请求。
    MVC处理过程

MVC设计模式工作流程

MVC设计模式工作流程

MVC组件类型的关系和功能

MVC组件类型的关系和功能

MVC模式的优点

  • 1 低耦合:

通过将视图层和业务层分离,允许更改视图(View)层代码而不必重新编译模型(Model)和控制器(Controller)代码,同样,一个应用的业务流程或者业务规则的改变,只需要改动 MVC 的模型层(及控制器)即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。模型层是自包含的,并且与控制器和视图层相分离,所以很容易改变应用程序的数据层和业务规则。一旦正确的实现了模型层,不管数据来自数据库或是其他地方,视图层都将会正确的显示它们。由于运用 MVC 的应用程序的三个部件是相互独立,改变其中一个部件并不会影响其它两个,所以依据这种设计思想能构造出良好的松耦合的构件。

  • 2 重用性高:

随着技术的不断进步,当前需要使用越来越多的方式来访问应用程序。MVC 模式允许使用各种不同样式的视图来访问同一个服务端的代码,这得益于多个视图能共享一个模型。比如,用户可以通过电脑或通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式(流程)是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面(视图)使用。例如,很多数据可能用 HTML 来表示,但是也有可能用 WAP 来表示,而这些表示的变化所需要的是仅仅是改变视图层的实现方式,而控制层和模型层无需做任何改变。由于已经将数据和业务规则从表示层分开,所以可以最大化的进行代码重用了。另外,模型层也有状态管理和数据持久性处理的功能,所以,基于会话的购物车和电子商务过程,也能被 Flash 网站或者无线联网的应用程序所重用。

  • 3 生命周期成本低:

MVC 模式使开发和维护用户接口的技术含量降低。

  • 4 部署快:

使用 MVC 模式进行软件开发,使得软件开发时间得到相当大的缩减,它使后台程序员集中精力于业务逻辑,界面(前端)程序员集中精力于表现形式上。

  • 5 可维护性高:

分离视图层和业务逻辑层使得应用更易于维护和修改。

  • 6 有利软件工程化管理:

由于不同的组件(层)各司其职,每一层不同的应用会具有某些相同的特征,这样就有利于通过工程化、工具化的方式管理程序代码。控制器同时还提供了一个好处,就是可以使用控制器来联接不同的模型和视图,来实现用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

MVC模式的缺点

  • 1 没有明确的定义:

完全理解 MVC 模式并不是很容易的。使用 MVC 模式需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考软件的架构。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

  • 2 不适合小、中型应用程序:

花费大量时间将 MVC 模式应用到规模并不是很大的应用程序通常会得不偿失。

  • 3 增加系统结构和实现的复杂性:

对于简单的界面来说,非要严格遵循 MVC 模式,使模型、视图与控制器分离的话,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

  • 4 视图对模型数据的低效率访问:

依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

总结

MVC(Model-View-Controller)模式是一种软件设计模式,用于将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。每个部分都有不同的责任和功能,以实现代码的分离和重用。以下是对MVC模式的总结:

模型(Model):

  • 模型代表应用程序的数据和业务逻辑。它负责管理数据的存储、检索和更新,以及执行业务逻辑操作。
  • 模型通常是独立于用户界面的,可以被多个视图共享。
  • 模型通常不直接与视图进行交互,而是通过控制器来更新视图或响应用户操作。

视图(View):

  • 视图是用户界面的表示,负责展示模型数据给用户,并接收用户输入。
  • 视图通常是passive的,只负责展示数据,不包含业务逻辑。
  • 视图可以被模型监视,以便在模型数据发生变化时更新视图。

控制器(Controller):

  • 控制器负责接收用户输入并根据输入更新模型或视图。
  • 控制器处理用户操作,并调用相应的模型方法来更新数据或执行业务逻辑。
  • 控制器将模型数据传递给视图进行展示,同时也可以监听视图的事件来更新模型。

MVC模式的优点包括:

  • 代码分离:将应用程序分为模型、视图和控制器,使得代码的组织更加清晰,易于维护和扩展。
  • 可重用性:模型和视图之间的分离使得它们可以独立重用,提高了代码的可重用性。
  • 可测试性:模型、视图和控制器之间的分离使得单元测试变得更加容易,可以更好地测试每个部分的功能。

总的来说,MVC模式是一种有助于将应用程序的不同部分分离和组织的设计模式,有助于提高代码的可维护性、可重用性和可测试性。

声明:本文仅作个人学习使用,部分内容来自网络,若有侵权可联系删除。

  • 44
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值