什么是MVC?[转+整理]

来源:
https://blog.csdn.net/u010376788/article/details/49338225
https://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6/9241230?fromtitle=MVC&fromid=85990&fr=aladdin

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

1、什么是设计模式?[转自菜鸟学堂]
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

提到设计模式,就不得不提GOF:
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。
四位作者合称 GOF(四人帮,全拼 Gang of Four)

设计模式的用途:
设计默认在软件开发中主要有两个用途:
(1)开发人员的共同平台:设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。
(2)最佳实践:设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。

2、什么是MVC设计模式[转自百度百科、CSDN博客等]
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。

MVC是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式。

MVC目前流行于使用MVC设计模式创建Web应用程序:
Model(模型):
M是应用程序的核心,是应用程序中用于处理业务逻辑、和数据逻辑的部分,M又包含了业务处理层和数据持久层(数据业务)。其准备数据、并处理从视图层和数据持久层接收到的数据。

M是进行业务逻辑判断和数据库存取,以我们平常的说法,也就是所谓的业务逻辑处理,可以说实现了三层架构中BLL层(业务逻辑层)和DAL层(数据访问层)的功能。

MVC三个部件中,M拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

View(视图):
V负责数据的输出形式,是应用程序中处理数据显示的部分,是用户看到并与之交互的界面。V从M获得要展示的数据,然后用自己的方式展示给用户。V将模型的内容展现给用户,用户可以通过V来请求M进行更新。例如,用户在页面上操作或者填写完成后,会单击提交按钮或是以其他触发事件的方式,来向C发出请求。

对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML、XML/XSL、WML等一些标识语言和Web services。MVC可以处理多个V,而一个V也不想HTML中那样,仅代表一个网页,而是一个网页有好多V拼接而成。

MVC好处是它能为应用程序处理很多不同的视图。在V中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为V来讲,它只是作为一种输出数据并允许用户操纵的方式。

Controller(控制器):
C负责协调模型和视图,用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型相映射,也就是调用模型来实现用户请求的功能。然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。
通常C负责从V读取数据,控制用户输入,并向M发送数据。C接受用户的输入并调用M和V去完成用户的需求。So,当单击Web页面中的超链接和发送HTML表单时,C本身不输出任何东西和做任何处理,它只是接收请求并决定调用哪个M构件去处理请求,然后再确定用哪个V来显示返回的数据。

MVC模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。

MVC分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
MVC框架中,MVC只是基础,是为了使代码结构更清晰。如AngularJS,VUE等MVC框架,MVC是框架最大的逻辑,在MVC的基础上,使得其他的GoF(设计模式),如模块化、依赖注入(或称控制反转)、数据绑定、链式调用、模板、职责分离等都在这个基础上实现,依靠MVC可以使整个整个框架逻辑整清晰。

最典型的MVC就是JSP + servlet + javabean的模式。

  

3、什么是框架(Framework)?

Framework,是一个语言开发软件,提供了软件开发的框架,使开发更具工程性、简便性和稳定性。

设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象。 框架可以用代码表示,也能直接执行或复用。可以说,框架是软件,而设计模式是软件的知识。

框架通常是代码重用,而设计模式是设计重用。

可以基于一个设计模式,开发一个框架;也可以一个框架中含有一个或多个设计模式。

5、常见的MVC框架(Framework)
(1) Spring框架
核心是DI(Dependency Injection)(依赖注入)和IOC(Inversion of Control)(反转控制);
A. Spring框架对Web的支持是,SpringMVC框架
B. Spring框架对持久层的支持是,JDBCTemplate

(2) Struts框架
Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。

Struts 是Java Web MVC框架中不争的王者。经过长达九年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。

(3)ZF框架
Zend Framework(简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。

(4).NET框架
.NET MVC是微软官方提供的以MVC模式为基础的.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来。

猜你喜欢

转载自www.cnblogs.com/yickel/p/10973818.html