MVC设计模式
什么是MVC设计模式?
软件工程中的一种软件架构模式。它强制性地使软件系统的输入-处理和输出分开,把软件分为三个基本部分:
模型(Model)视图(View) 控制器(Controller)
![MVC设计模式图](https://i-blog.csdnimg.cn/blog_migrate/cdf3a43aefa073e8d92c68524e6b4dc5.png)
视图:负责格式化数据并把它们呈现给用户,包括数据展示,用户交互,数据验证,界面设计等功能。
控制器:负责接收并转发请求,对请求进行处理后指派视图并将相应结果发送给客户端。
模型:模型对象拥有最多的处理任务,是应用程序的主体部分,它负责数据逻辑(业务规则)的处理和实现数据操作。
JSP Model1
当业务流程较为简单的时候,可以把控制器的功能交给视图来实现,这种模式称为JSP Model 1.故Model 1模式只有视图
和模型,没有控制器(即JSP +JavaBean) 如下图所示
![JSP Model 1](https://i-blog.csdnimg.cn/blog_migrate/46cdf7cf5f8f20044d641d82ef58e2e9.png)
从上图可以发现Model 1 的基础是JSP,它由JSP和JavaBean组成,JSP从HTTP Request中获取所需的数据,并进行
业务逻辑的处理,然后将结果通过HTTP Response返回给前端浏览器。从中可见,Model 1 从一定程度上实现了MVC,即
JSP将控制器和视图层合二为一,JavaBean为模型层。其中JSP身兼多职,既要负责视图层的数据展示,又要负责业务流程
的控制,结构较为混乱,并且也不是我们所希望的松耦合架构模式,所以当业务流程复杂的时候并不推荐使用。
JSP Model2
当业务流程复杂的时候,就需要把业务流程交给控制器来实现,JSP专注于视图的展现即可。这种模式就是JSP Model2
(JSP + Servlet + JavaBean) 如下图所示
![JSP Model2](https://i-blog.csdnimg.cn/blog_migrate/ac581f263607a4f86825f4fd876b54ed.png)
Model2是将控制层(Servlet)单独划分出来负责业务流程的控制,接收请求,创建所需的JavaBean实例,并将处理
后的数据再返回给视图层(JSP)进行界面数据展示。这样的结构清晰,效果明显优化很多,并且也是一个松耦合的架构模
式,所以除非项目非常简单,一般情况下建议使用JSP Model2.
MVC处理过程
![MVC处理过程](https://i-blog.csdnimg.cn/blog_migrate/7a9112104d5773b0a1e5c493a694338c.png)
- 首先视图提供系统与用户交互的界面,并发送用户输入给控制器。
- 控制器接收用户的请求,并决定应该调用哪些模型来进行处理。
- 模型根据用户请求进行相关的业务逻辑处理,并返回处理结果(数据)。
- 控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果。
MVC优缺点
优点
多视图共享一个模型,大大提高代码的可重用性。
MVC三个模块相互独立,松耦合架构。
控制器提高了应用程序的灵活性和可配置性。
有利于软件工程化管理
总之,我们可以通过MVC的设计模式最终可以打造出一个松耦合+高重用性+高可适用性的完美架构,
当然这也是架构设计的目标之一。
缺点
原理复杂
增加了系统结构和实现的负责性
视图对模型数据的低效率访问
对于MVC来说,它并不适合小型甚至中型的项目,花费大量时间将MVC应用到规模并不是很大的应用
程序通常得不偿失,所以对于MVC设计模式的使用要根据具体的应用场景来决定。