📖MVC设计模式详解(思想、结构、作用与实现)

发布: 2016-11-11
热度: 57
趋势: 57
权重: 0
🎯

MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,本身并不引入新的功能,用来指导我们改善应用程序的架构,使得模型和视图相分离,得到更好的开发和维护效率。

MVC 简介

MVC 的全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。

MVC 是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。

MVC 始存于桌面程序中的,M 是指业务模型,V 是指用户界面,C 则是控制器。

MVC 设计在 Java Web 应用中得到广泛的应用,但其并不局限于 Java 语言,比如前端、PHP、.NET 等语言。

之所以采用 MVC 设计模式的根本原因在于解耦各个模块。

MVC 设计思想

MVC 英文即 Model-View-Controller,即把一个应用的输入、处理、输出流程按照 Model、View、Controller 的方式进行分离,这样一个应用被分成三个层:模型层、视图层、控制层。

MVC 三个层面的职责非常明确,而且相互分离,因此每个层面都可以独立的改变而不影响其他部分,从而大大提高了应用的灵活性和重用性。

SC-133-mvcdown1.jpg

模型(Model)

模型(Model)通常又分为数据模型和业务逻辑模型。

  1. 数据模型用来存放业务数据,比如订单信息、用户信息等;
  2. 业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。

因此:Model 主要用于存储数据以及处理用户请求的业务逻辑。

视图(View)

视图(View)代表模型(Model)包含的数据的可视化,将内容展现给用户。

  • 视图从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互,比如由 html 元素组成的网页界面,或者软件的客户端界面。
  • 一般来说,模型发生改变时会通知视图,视图也可以主动向模型(经过控制器)查询变化来保证数据一致性。
  • 当用户在视图(View)界面上操作后,如提交、触发事件等,将向控制器(Controller)发出请求。

控制器(Controller)

控制器(Controller)控制数据流向模型对象,并在数据变化时更新视图。

控制器(Controller)作用于模型和视图上,本身并不做任何处理,它使得视图与模型解耦分离。

  1. 收到用户的请求后,会将请求与模型的更新相映射,调用模型来实现用户请求的功能。
  2. 选择用于响应的视图,将模型更新后的数据展示给用户。

MVC 的作用

当程序结构划分不明确时,各个部分功能混乱,如果需要变更业务功能时,无论是业务逻辑修改还是显示形式修改,都要修改很多的关联类,“牵一发而动全身”,导致软件的开发和维护效率低下,BUG 百出。

遵循 MVC 模式来开发系统,就会极大的避免上述问题的出现。

MVC 模式的核心手段是解耦,MVC 模式通过科学的层次划分,把整个应用程序划分成模型、视图、控制器三个部分,然后严密控制三个部分之间的通信,从而得到一个结构清晰、功能分布合理、可重用、可扩展、可维护的应用程序。

MVC 的好处

  1. 低耦合:
    MVC 模式,模型和视图是解耦的,模型不会依赖于视图,而视图也仅仅是从模型中获取需要展示的数据,并不会与模型的逻辑处理相关联。
  2. 低成本:
    MVC 模式帮我们清楚的划分了职责,可以让程序员各司其职,服务端只关心业务逻辑的实现,也就是模型部分;UI 程序员只关心页面展示,也就是视图部分即可。
  3. 可维护:
    MVC 模式划分出明晰的模型和视图部分,并使其解耦,在软件需求发生变更的时候,就可以各自独立的改变而不会相互影响,使得程序更容易维护和扩展。

MVC 在 Web 应用中的实现(Model2 模型)

采用 MVC 设计模式并不一定完全生搬硬套。

比如在 Java 的 Web 开发中,通常把 Servlet+JSP+JavaBean 的模型称为 Model2 模型,这是一个完全遵循 MVC 模式的模型。

经典框架 Struts2、SpringMVC 均遵循了这个模型进行设计。

  • JavaBean(模型){数据模型:实体类;逻辑模型:Service 层、Dao 层等}
  • JSP(视图)
  • Servlet(控制){原生 Servlet、SpringMVC 的 Controller、Struts2 的 Action 等}

在 Web 开发中,由于 Web 应用程序的性质,不存在服务器主动向客户端“推”数据(这里代指 TCP 协议下),因此从 Model 到 View 之间的虚线是不存在的。

效果如下图:

SC-134-mvcdown2.png

当前文章暂无讨论,留下脚印吧!
大纲
  • MVC 简介
    • MVC 设计思想
      • 模型(Model)
      • 视图(View)
      • 控制器(Controller)
  • MVC 的作用
    • MVC 的好处
  • MVC 在 Web 应用中的实现(Model2 模型)
提交成功,请等待审核通过后全面展示!

发表评论

昵称
邮箱
链接
签名
评论

温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。

选择头像