同学们好!截至目前,我们构建的工程基本上都是单文件工程,即只有一个main.go文件。然而实际的项目开发,一个工程通常会包含多个文件,其中不但有Go语言代码文件,还可能有HTML文件,JavaScript文件,甚至CSS文件等等。把所有这些不同语言、不同类型、不同功能、不同用途的文件,都放在工程目录一级目录下,会显得非常混乱且不易管理。因此,一般我们会在工程目录下创建多个子目录,将这些文件分门别类地放在不同的子目录下。那么我们根据什么来创建这些子目录,或者说划分这些文件呢?这就涉及到代码组织架构的问题。这节课我们要为大家介绍的MVC就是一种非常常见且实用的代码组织架构。
这里我们主要关注两个问题。首先我们要弄清楚到底什么是MVC?其次我们搞明白基于MVC架构的处理流程。
那么究竟什么是MVC呢?
MVC是一种常见的代码组织架构,其核心宗旨就是对数据处理解耦,即令被划分开的代码模块之间的耦合度尽可能地低。对一个模块的修改、扩展或干脆替换掉,其它模块所受到的影响微乎其微,最好能做到丝毫不受影响。MVC并非一种设计模式,当然也不在32种经典设计模式之列,但它对程序逻辑层次的划分,起到了至关重要的作用,且几乎成为一种事实上的标准模式。MVC把一个程序划分为M、V和C三个组成部分,或者说三个逻辑层次。其中M,即Model,代表模型层,通常指与数据库操作有关的代码。V,即View,代表视图层,通常与数据的显示有关。而C,即Controller,代表控制器层,它是连接模型层与视图层的纽带,主要由实现业务逻辑的代码组成。MVC是一种设计理念,与编程语言无关。
那么基于MVC架构的数据处理流程又是怎样的呢?
首先,作为MVC架构核心的控制器层,接收来自客户机的请求,并进行必要的业务处理,在这个过程中可能需要通过模型层访问数据库。控制器层将业务处理的结果交给视图层,转换为适于展现的形式,再返回给客户机。基于MVC架构的工程,其工程目录下至少包含三个子目录,model子目录放置与模型层有关的文件,view子目录放置与视图层有关的文件,而controller子目录则放置与控制器层有关的文件。当然,目录名并不限于这三个单词,但其功能大体如是。
谢谢大家,我们下节课再见!