MVC架构模式详细说明

59 篇文章 7 订阅
订阅专栏
18 篇文章 9 订阅
订阅专栏
17 篇文章 4 订阅
订阅专栏

一、简介:

  架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。

  模型-视图-控制器模式,也称为MVC模式(Model View Controller)。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。它把软件系统分为三个基本部分:

    模型(Model):负责存储系统的中心数据。

    视图(View):将信息显示给用户(可以定义多个视图)。

    控制器(Controller):处理用户输入的信息。负责从视图读取数据,控制用户输入,并向模型发送数据,是应用程序中处理用户交互的部分。负责管理与用户交互交互控制。

  视图和控制器共同构成了用户接口。

  且每个视图都有一个相关的控制器组件。控制器接受输入,通常作为将鼠标移动、鼠标按钮的活动或键盘输入编码的时间。时间被翻译成模型或试图的服务器请求。用户仅仅通过控制器与系统交互。

 

二、结构

  模型组件包含应用程序的功能内核,他封装了相应的数据并输出执行特定应用程序处理的过程;模型也提供访问数据的函数,这些数据有获得待显示的数据的视图组件使用。

  控制器代表用户调用所有这些过程。

三、目的

  实现一种动态的程序设计,是后序对程序的修改和扩展简化,并且使程序某一部分的重复利用称为可能。

  通过对复杂度的简化,使程序结构更加直观。

  将信息的内部表示与信息的呈现方式分离开来,并接受用户的请求。它分离了组件,并允许有效的代码重用。即,将模型和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保模型和视图的同步,一旦模型改变,视图应该同步更新。

四、特点

  MVC重要特点就是两种分离:

  视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)

  视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。

  优点:耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程化管理。

  缺点:没有明确的定义;不适合小型,中等规模的应用程序;增加系统结构和实现的复用性;视图与控制器间的过于紧密的连接;视图对模型数据的低效率访问;一般高级的界面工具或构造器不支持模式。

五、特定环境

  大的项目;需要划分模块的项目。

六、解决的问题

  因为在PHP还不支持面向对象之前,是过程化的方式来创建的,它们将 Model View Controller 三层的代码混在一起,十分混乱。所以它解决的问题有:维护难,开发速度慢,二次开发难度高,工作量大,代码复用,耦合度高,系统不灵活。

七、解决方案

  以我的理解,将项目模块化,分为三个部分:模型,视图和控制器三个部分。模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。Model 通过更新View的数据来反映数据的变化。

八、实例

  应用于基于MVC架构模式的框架,常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:angularjs、reactjs、backbone;由MVC演化出了另外一些模式如:MVP、MVVM。

  这里我们举例Spring MVC:

  Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是两个核心:

  处理器映射:选择使用哪个控制器来处理请求 
  视图解析器:选择结果应该如何渲染

  通过以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。

  运行原理如图所示:

(1)Http请求:客户端请求提交到DispatcherServlet。 
(2)寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。 
(3)调用处理器:DispatcherServlet将请求提交到Controller。 
(4)(5)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。 
(6)(7)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。 
(8) Http响应:视图负责将结果显示到客户端。

 

 Spring MVC框架与MVC架构模式联系在于:

  SpringMVC中并没有涉及有关于Controller接口规范的实现,SpringMVC是通过调用Handler来实现Controller这一层的。

  SpringMVC使用了适配器模式,前端控制器使用HandlerAdapter来调用不同的Controller,然后才是Controller调用Model产生数据模型; 
  产生的数据模型将会再次返回到前端控制器,并由前端控制器决定使用不同的模板引擎将页面进行渲染。

九、MVC架构模式与分层模式的区别

  MVC模式属于设计模式的范畴,就如同其他设计模式一样,模式的出现就是为了对某种功能的优化,而MVC模式可以看做是对三层架构中表现层的一种细分优化。以我的理解,MVC模式就是分层模式中表示层最常用的架构模式。

  详细阐述如下:

  严格说这三个加起来以后才是三层架构中的表现层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的业务逻辑层进行对话。三层和MVC可以共存。 三层是基于业务逻辑来分的,而MVC是基于页面来分的。

  三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可比性,是应用于不同领域的技术。

十、MVC架构模式与MVC框架的区别

  MVC框架,强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。其所使用的三个核心部件都是来时MVC模式的。只不过在框架中让他们彼此更加独立了去处理各自的任务而已。最典型的MVC就是JSP+SERVLET+JAVABEAN模式。

  MCV框架中:

  视图:视图是用户看到并与之交互的界面,视图的主要有元素HTML,Adobe Flash,XHTML,XML/XSL,WML等一些标识语言和Web services。

  模型:模型数据和业务规则。

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

十一、MVC架构模式的举例说明

  例如①,小时候玩的那种卡带式游戏机,Control是主机,一般来说我买一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。View则是电视机和游戏手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,遥杆还是带震动的。Model则是游戏卡带,他决定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏代码和存储单元,都根据游戏的需要而设计。

  例如②,一个采用比例表示的用于政治选举的一个简单信息系统,它提供了一个输入数据的电子数据表和表示当前结果的几种图标。用户可以通过图形接口与系统交互。所有信息显示必须立即反应出选举数据的变化。(引用自《面向模式的软件体系结构-卷1 模式系统》)

  即,一旦模型的数据发生了变化,模型要通报所有的视图。

MVC多层架构模式
07-22
帮助初学者理解MVC多层架构模式开发流程图及说明.
MVC架构详细介绍与分析
ccjjjjdff的博客
03-13 6709
MVC架构详细介绍以及通过实例了解并实现MVC架构
[源代码] .NET学架构之框架赏析 基于七层架构MVC模式电子商务网站
09-14
☆☆ 资源说明:☆☆ ☆ 框架说明 ☆ 本框架取自于《[清华大学出版社] ASP.NET设计模式》([Wrox] Professional ASP.NET Design Patterns)中的基于MVC的电子商务网站框架,本框架采用七层架构,使用了NHibernate、StructureMap、AutoMapper等多种开源技术; (PS: 《ASP.NET设计模式》是一本很不错的讲解.NET项目框架中设计模式运用的图书,极力推荐阅读) ☆ 框架层次 ☆ Model Layer Infrastructure Layer ORM NHibernate Layer Services Layer Services Cache Layer Controllers Layer MVC Layer ☆ 类库版本 ☆ AutoMapper -- 1.0.0.155 Iesi.Collections -- 1.0.1.0 LinFu.DynamicProxy -- 1.0.3.14911 log4net -- 1.2.10.0 NHibernate -- 2.1.0.2002 NHibernate.ByteCode.LinFu -- 2.1.0.2002 StructureMap -- 2.5.3.0 ☆ 开发环境 ☆ 开发工具:Microsoft Visual Studio 2010 数 据 库: Microsoft SQL Server 2008
java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
06-10
java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
MVC结构剖析图(非常详细适合新手)
06-17
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVCC个人理解
qq_41150703的博客
08-27 772
MVCC个人理解
MVC介绍
weixin_44171249的博客
05-13 2万+
1.什么是MVC MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。 2.为什么要使用MVC 程序通过将M(Model)和V(View)的代码分离,实现了前后端代码的
什么是MVC
weixin_45920385的博客
10-20 3万+
什么是MVC1、什么是MVC2、代码层面理解(1)pom依赖(2)编写一个Servlet类,用来处理用户的请求(3)编写Hello.jsp,在WEB-INF目录下新建一个jsp的文件夹,新建hello.jsp(4)在web.xml中注册Servlet(5)配置Tomcat,并启动测试3、小结 1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范,是将业务逻辑、数据、显示分离的方法来组织代码。 MVC主要作用是降低了视图与业务逻辑间的双向
MVC模式简介
weixin_45808737的博客
06-05 1万+
MVC模式一.MVC是什么二.优缺点2.1 MVC模式的优点2.1.1 低耦合2.1.2 重用性高2.1.3 生命周期成本低2.1.4 部署快2.1.5 可维护性高2.1.6 有利软件工程化管理2.2 MVC模式的缺点2.2.1 没有明确的定义2.2.2 不适合小、中型应用程序2.2.3 增加系统结构和实现的复杂性2.2.4 视图对模型数据的低效率访问 一.MVC是什么 MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)
Android实现求职招聘系统,客户端+服务端,MVC设计模式
03-15
系统开发环境: Windows + Myclipse(服务器端) + Eclipse(手机客户端) + mysql数据库 服务器也可以用Eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 求职者: 用户名,登录密码,姓名,性别,出生日期,用户照片,学历,毕业学校,工作经验,联系电话,邮箱,现居地址,求职意向,工作经历,教育经历,自我评价,注册时间 学历: 记录编号,学历名称 企业: 企业账号,登录密码,企业名称,企业资质,企业性质,企业行业,企业规模,联系人,联系电话,企业邮箱,企业地址 企业性质: 记录编号,企业性质名称 企业行业: 记录编号,行业名称
传统MVC架构和前后端分离架构模式对比
02-25
通过多维度对传统的MVC和前后端分离架构进行对比,深入对比了两种架构方式的优缺点,还有MVC和MVVM的区别与联系。
MVC、MVP、MVVM架构模式--简单说
Osborn的博客
09-24 228
这三种架构模式模式可以说是行业必备知识,不管是开发人员还是需求产品设计人员,都能说上两句。 不过对于开发人员面试的时候还是会经常被问到。 一、MVC(Model-View-Controller) MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
mvc如何嵌套第三方页面_MVC,MVP,MVVM比较以及区别(上)
weixin_39622643的博客
12-01 120
MVC,MVP,MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式,以前只是对他们有部分的了解,没有深入的研究过,对于一些里边的概念和区别也是一知半解。现在一边查资料,并结合自己的理解,来谈一些对于这三种模式思想的理解,以及他们的区别,欢迎大佬高手拍砖。阅读目录:1.MVC,MVP,MVVM诞生的需求?2.一段典型的耦合代码3.MCV模式 3.1 主动MVC 3.2 被动MVC 3.3...
MVC框架详解(资源整理)
热门推荐
皓月星辰
08-14 14万+
一、什么是MVC? 二、SpringMVC流程图详解 三、简单例子 四、常用注解总结 五、MVC优点与不足
MVC
weixin_43739465的博客
11-20 866
什么是 MVC 模式 MVC,即 Model 模型、View 视图,及 Controller 控制器。 View:视图,为用户提供使用界面,与用户直接进行交互。 Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。所谓数据承载 Bean 是指实体类,专门用于承载业务数据的,如 Student、User 等...
MVC框架之SpringMVC
u014379055的博客
09-23 1973
简介 Spring MVC 是 Spring 给我们提供的⼀个⽤于简化 Web 开发的框架。在说Spring MVC前,我们需要了解下什么是MVC架构以及三层架构? 1 MVC 体系结构 三层架构 在 JavaEE 开发中,⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。 三层架构中,每⼀层各司其职,接下来我们就说说每层都负责哪些⽅⾯: 表现层 :也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http 协议请求w
MVC简介
m0_51407692的博客
05-20 9233
简介 MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 MVC模式最早由Trygve Reenskaug在1978年提出[1],是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模
三菱PLC例程源码QD75P八轴定位系统程序
最新发布
03-28
三菱PLC例程源码QD75P八轴定位系统程序本资源系百度网盘分享地址
详细说明mvc和mvvm的区别
03-14
MVC和MVVM都是常见的前端架构模式,它们的主要区别在于数据绑定的方式。MVC模式中,View和Model是分离的,Controller作为中介将两者联系起来。而在MVVM模式中,View和Model之间通过ViewModel进行双向绑定,ViewModel负责将Model的数据转化为View可以展示的数据,并将View中的数据变化同步到Model中。 具体来说,MVC模式中,View只负责展示数据,不处理数据,Model只负责数据的存储和处理,Controller负责将View和Model联系起来,控制数据的流向。而在MVVM模式中,ViewModel作为View和Model之间的桥梁,负责将Model中的数据转化为View可以展示的数据,并将View中的数据变化同步到Model中,实现了双向绑定。 总的来说,MVC模式更加简单,适用于小型应用,而MVVM模式则更加灵活,适用于大型应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 数据库实体联系如何转换为关系模式 25886
  • 函数依赖与关系模式分解的一些技巧整理 22634
  • 13种常见软件体系结构风格定义分析、结构图、优缺点 22138
  • 架构设计4+1视图 21631
  • DFD数据流图例题 12050

分类专栏

  • Linux 1篇
  • 软考-Web应用系统架构设计 6篇
  • 虚拟云 1篇
  • 软考 59篇
  • 软考---数据库 11篇
  • 软考----软件工程 24篇
  • 软考----架构 18篇
  • 软考----操作系统 6篇
  • 软考-----网络 3篇
  • 软考----基础知识 1篇
  • 软考---计算机组成与体系结构 4篇
  • 软考---SOA-微服务 17篇
  • 软考----信息安全
  • 软考----系统可靠性分析
  • 软考---ABSD 1篇
  • 软考----企业信息化战略
  • 软考---架构评估 2篇
  • 软考----数学与经济管理
  • 软考---专业英语
  • 软考---案例分析 17篇
  • 软考----论文 19篇
  • 其他 7篇
  • 软考---应试技巧 4篇
  • JAVA 11篇
  • 构件 7篇
  • MVC 4篇
  • 软考---UML 9篇
  • 软考---设计模式 1篇
  • 软考--DFD 3篇
  • 软考---NOSQL 12篇
  • 软考---案例:数据架构建模 26篇
  • 软考---测试 1篇

最新评论

  • 仓库风格

    Cdf(人名): 写的不错!期待大佬回访!

  • 13种常见软件体系结构风格定义分析、结构图、优缺点

    撬动未来的支点: 好!

  • 论基于架构的软件设计方法及应用

    旺仔OO糖: 博主写的非常清晰啊,对我很有帮助,谢谢啦

  • 论面向服务架构(SOA)设计及其应用

    向彪-blockchain: 写的不错,学习了,学习的道路上一起进步,也期待你的关注与支持!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 在Linux系统中使用LVM新增一块硬盘的具体操作步骤
  • 架构设计4+1视图的作用与关系
  • 论文-软件设计方法
2024年1篇
2022年17篇
2021年31篇
2020年25篇
2019年42篇
2018年13篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司网页设计哪家专业白山市网站开发哪家专业襄阳网站搭建中卫seo优化价格舟山市网站开发哪家专业临汾市阿里店铺运营价格资阳网站定制营口网站定制报价玉溪网页设计哪家专业伊春阿里店铺运营丹东市网页设计价格运城建站报价佛山seo排名哪家专业南宁市营销网站建设推荐武威市定制网站多少钱宜昌市网站制作多少钱北京做网站公司衡阳网站设计多少钱承德市seo按天计费公司新余市阿里店铺运营报价新乡市建站哪家专业淄博市建网站哪家好常德市网络推广报价鞍山网站开发哪家专业吉安seo排名哪家专业四平网页设计哪家好日照seo排名哪家好宜昌市网站改版公司潍坊市网站推广价格晋城定制网站多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化