参考:https://blog.csdn.net/u010929604/article/details/50864636
https://www.cnblogs.com/rubylouvre/archive/2012/11/19/2777240.html
http://www.it1352.com/985789.html
https://blog.csdn.net/baibaibai66/article/details/51311777
(待完善中...)
本文采用的学习流程:认识(概念)→了解(历史背景)→接触(优缺点)→能力(作用)→比较(区别)→环境(关系)→体验(实现例子)→使用(实际运用例子)
(①②③④⑤⑥⑦⑧⑨⑩)
1.MVC是什么?
答:是一种架构模式。
①什么是架构模式?
定义:也可称作架构风格,一个架构模式描述软件系统里的基本的结构组织或纲要。
架构模式提供一些呈现定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。
理解:一种思想。
意义:指导解决问题。
例子:MVC,解决系统的数据与显示分离的问题。
2.MVC的历史背景
1970年的时候由TrygveReenskaug在Smalltalk-80系统上首次提出。起初并不是MVC,而是MVCE,也就是Model - View - Controller后面多了一个Editor。但是当时提出MVC的理念和现在的理念大致是一样的。都是为了讲数据模型和视图层分离开来。
Classic MVC 大概上世纪七十年代,Xerox PARC的Trygve提出了MVC的概念。
并应用在Smalltalk系统中,为了和其它类型的MVC加以区分,历史上习惯的称之为Classic MVC。
其实MVC是一种框架模式,而非设计模式,GOF把MVC看做是3中设计模式:《观察者模式》、《策略模式》,《组合模式》三者的合体。其核心是《观察者模式》。
2.MVC命名含义是?
答:Model - View - Controller的简写,即:模型 - 视图 - 控制器。
表达了实现MVC的构成,便于闻名知意。
4.MVC的分类?及其区别?
标准MVC
Web MVC
3.对MVC的构成的理解?
①模型(Model):
(1)本质:构成系统的一个层模块。
(1)命名含义:系统、理论或现象的示意性描述,用来解释其已知的或推断的性质,也可用于进一步研究其特点。(针对英文Model)
图1
图2
由图1可得:创建Web MVC后VS自动生成的Models中可以创建.cs文件用于自定义Models,即每个Models中可以创建任意个Model,即任意个类。
由图1、图2得:每个Model中包含了属性及方法,目前一般都将其分离开来:数据Models 和 行为Models。(例如上图的AccountViewModels和IdentityModels)
都是被Controller引用,即只与Controller交互。
②视图 (View):
查询领域数据并展现给用户
视图代表模型包含的数据的可视化。
视图是用户看到并与之交互的界面(它可以包括一些可以显示数据信息的页面,或者展示形式。例如jsp,html,asp,php)。
负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
视图层 实现数据呈现 提供界面
(1)本质:构成系统的一个层模块。
(1)命名含义:(针对英文View)
③控制器(Controller):
控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
控制器接受用户的输入并调用模型和视图去完成用户的需求(接受客户发送的请求,根据请求调用所对应的接口,然后模型业务处理后返回的数据,由控制器决定调用那个View展示)
接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作,。
通过调用业务逻辑产生合适的数据
传递模型层生产调取数据给视图层用于呈现
截获用户请求并改变领域数据
1)本质:构成系统的一个层模块。
(1)命名含义:(针对英文View)