MVC是Modeling、View、Controller的缩写,代表软件设计的分层理念:Modeling指数据模型,View指前端交互视图,Controller指业务逻辑,MVC模式下的软件分层结构如下图所示。
MVC 模式中三个组件的详细介绍如下:
模型(Model):用于封装与应用程序业务逻辑相关的数据以及对数据的处理方法。Model 有对数据直接访问的权力,例如对数据库的访问。Model 不依赖 View 和 Controller,也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,由此,View 可以了解在数据 Model 上发生的改变。(如,软件设计模式中的“观察者模式”);
视图(View):能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(即 Model),因此应该事先在被它监视的数据那里注册;
控制器(Controller):起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。
前端交互层负责绘制程序界面,完成前端程序和用户的交互互动,并实现一些简单的业务逻辑,例如数据校验。常见的负责绘制界面的编程语言有JavaScript、HTML5
业务逻辑层
业务逻辑层负责处理业务逻辑,例如在分销运营管理后台的门店列表页,点击“关联账号”按钮,前端交互层把指令发送给业务逻辑层,业务逻辑层要判断门店状态是否能够关联账号、是否有空闲账号可以进行关联等。
数据层
数据层代表底层的数据存储。数据包括结构化数据和非结构化数据,既可以存储在数据库中,也可以存储在文本文件中。数据存储操作一般由程序来完成,例如通过程序对关系型数据库的数据进行增删改查处理。
MVC重要特点就是两种分离:
视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)
视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。