Java的MVC设计模式,带你深刻理解MVC

MVC是一种设计模式,用于分离应用程序的输入、处理和输出。它包含模型(数据和业务逻辑)、视图(用户界面)和控制器(协调模型和视图)。使用MVC能减少代码冗余,提高可维护性,但可能增加复杂性和调试难度,适合大型项目,对于小型应用可能会过甚其用。在JavaWeb开发中,常见的MVC实现是Jsp+Servlet+JavaBean。
摘要由CSDN通过智能技术生成

什么是MVC?就是Model View Control,模型视图控制器。

编辑

添加图片注释,不超过 140 字(可选)

MVC流程图解

1.MVC概念:

MVC本来是存在于Desktop程序中的,M(Model)是指数据模型,V(View)是指用户界面,C(Control)是控制器。使用MVC的最直接目的就是将M和V实现代码分离,C则是确保M和V的同步,一旦M改变,V应该同步更新。

2.MVC工作方式:

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  • 视图 视图就是用户直接看到的并且可以与之交互界面。比如用Html元素组成的界面,以及包括一些flash等等。MVC一个很有用的好处就是,能为你的应用程序处理很多不同的视图,然而在视图中却没有真正的处理发生。

  • 模型 模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。 同时由于模型的代码只需写一次就可以被多个视图重用,所以,减少了代码的冗余度。

  • 控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

由上我们总结一下MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

编辑

添加图片注释,不超过 140 字(可选)

3.使用MVC的原因

很多对于Web应用程序来说,经常会出现将数据层代码和html等类似的表现层代码混在一起,经验丰富的则会把他们分离开,但是对于经验较少的,就难上加难了。因此,MVC从本质上,强制性的将他们分离开来。

①使用MVC最重要的原因就是,多个视图可以共享一个模型,由于你已经将数据和业务规则分开来,能最大程度减少代码的冗余度,最大化的冲用你的代码,这样,在后期的维护阶段,也能减轻很多压力。

②再者,由于运行MVC的应用程序的三个部分是相互独立的,改变其中一个不会影响另外两个,在设计思想中,我们就可以轻松的看到这种高内聚低耦合的优点。

③最后,控制器来链接不同的模型和视图去完成用户的需求。给定一些可重用的模型的视图,控制器就可以很轻松的根据用户的需求选择模型就行处理。这个操作看起来就很便捷。

4.MVC的缺点:

任何一件事物,都有两面性,MVC也是如此,主要有以下三点:

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

  • MVC并不适合小型甚至中等规模的应用程序 花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。

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

最后,在java中, 最典型的MVC就是Jsp + Servlet + JavaBean的模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农小凡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值