MVC架构详解(优缺点及3大模型组成)

MVC架构详解(优缺点及3大模型组成)-mikechen

MVC架构简介

MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基本的部分。

分别为:

  • 模型Model
  • 视图View
  • 控制器Controller

主要为以上三大部分组成,如下图所示:

MVC架构详解(优缺点及3大模型组成)-mikechen

 

MVC架构优缺点

1.MVC架构优点

1)多个视图共享一个模型,大大提高代码的可重用性;

2)三个模块相互独立,改变其中一个不会影响其他两,所以依据这种设计模式,能构建良好的松耦合性的组件;

3)控制器提高了应用程序的灵活性和可控制性:控制器可以用来连接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提高强有力的手段。

 

2.MVC架构缺点

1)增加了系统结构和实现的复杂性

对于简单页面,严格遵循mvc,会增加结构的复杂性。

2)视图与控制器过于紧密的连接

视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的。

3)视图对模型数据的低效率访问

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

 

MVC架构模型

MVC架构详解(优缺点及3大模型组成)-mikechen

1.模型(Model)

模型封装了数据及对数据的操作,可以直接对数据库进行访问。

简要的讲:就是一个或多个javabean对象,用于存储数据和业务逻辑。

 

2.视图(View)

视图负责展示,没有具体的程序逻辑,比如:一个JSP页面想控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据。

 

3.控制器(Controller)

控制器用于控制程序的流程,将模型中的数据展示到视图中。

比如:Servlet对象根据视图提交的请求进行控制,即将请求转发给业务逻辑的javabean,并将处理记过存放到实体模型javabean中,输出给视图显示。

 

MVC架构组件关系

这里我就以SpringMVC为例:

  • DispatcherServlet 控制器入口 负责分发请求
  • HandlerMapping 负责根据请求 找到对应的控制器
  • Controller 真正处理请求的控制器
  • ModelAndView 封装数据信息和视图信息的
  • ViewResolver 视图处理器 通过处理找到对应的页面

MVC架构详解(优缺点及3大模型组成)-mikechen

  1. DispatcherServlet收到请求后,依据HandlerMapping的配置,调用相应的Controller来处理。
  2. Controller将处理结果封装成ModelAndView对象,返回给DispatcherServlet。
  3. DispatcherServlet依据ViewResolver的解析,调用相应的视图对象,比如:jsp等,来生成相应的页面。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法