[MVC 详解] 温故知新+ 知识体系构建 (偏向Web MVC、C#语言实现)

参考: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)

             对于现实世界的事物、现象、过程或系统的简化 描述,或其部分 属性模仿。(简化解释)
    (2)分析:结合 面向对象(OO)的思想,可以理解为,对于对象(属性+行为的集合 -组成角度的概念)抽象描述,即对象
             {:对对象的抽象描述。在C#语言中,表现为类库。[并非所有面向对象(oo)语言都使用类请参阅Self,Javascript]}
                  [抽象:抽,抽出。象:仿效,模拟。此处含义为抽出对象的共同属性行为进行仿效后的事物。(属性:特征;例如:姓名、性别)]
    (3)构成:多个业务实体组合。(任意个
 
      (实体:客观存在的事物。 对象:对实体的抽象描述。:对对象的抽象描述,创建对象的模板。  -本质或关系角度的概念)
 
     (4)表现形式:在项目中名为Models的文件夹中存放.cs文件,其中封装了多个业务所需的,一个就是一个Model。
 
    (5)总结理解:由此其他说法,类似封装数据及逻辑、表示数据和业务逻辑等便不难理解了。类封装了对象的属性和行为,属性对应着数据,行为对应着方法,方法封装了实现核心功能的代码,这些代码表达了实现功能(业务:一个实体向另一个实体提供的服务(功能可以提供服务)。)所需的逻辑(逻辑:根据已有的信息推出合理的结论的规律。),实现这些核心功能的代码就叫业务逻辑。综上,大部分描述Model层的组成角度概念、作用角度概念都能简化为由类组成、以及类提供的作用
    (6)作用:产生需要的数据及 业务逻辑 并提供出去。
    (7)关系:在标准MVC中 主要与控制器(Controller)层、视图(View)层之间进行交互,C能改变其状态(即修改它的数据呈现状态,即修改数据使得呈现状态随之变化,改变状态此描述源自于观察者模式),V能查询其状态(查询也源自观察者模式,状态一词描述了Model层数据的呈现状态,若被修改View层随之变化),而Web MVC中C变成了中继者(即是两点间的一条传输通道),因此Model层在此类MVC中只与Controller层进行交互,它能改变也能查询Model层状态。
(8)例子:

图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)

             (简化解释)
    (2)分析:
    (3)构成:
    (4)表现形式:
 
    (5)总结理解:
    (6)作用:
    (7)关系:在标准MVC中 主要层之间进行交互。
(8)例子:

  ③控制器(Controller):

控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

控制器接受用户的输入并调用模型和视图去完成用户的需求(接受客户发送的请求,根据请求调用所对应的接口,然后模型业务处理后返回的数据,由控制器决定调用那个View展示)

接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作,。

通过调用业务逻辑产生合适的数据

传递模型层生产调取数据给视图层用于呈现

截获用户请求并改变领域数据

1)本质:构成系统的一个层模块。

    (1)命名含义:(针对英文View)

             (简化解释)
    (2)分析:
    (3)构成:
    (4)表现形式:
 
    (5)总结理解:
    (6)作用:
    (7)关系:在标准MVC中 主要层之间进行交互。
(8)例子:

  

   

 

猜你喜欢

转载自www.cnblogs.com/xm1998/p/11895420.html