MVC模式:Model-View-Controller模式,实现业务逻辑和展现逻辑解藕。
1 介绍
MVC模式既是一种设计模式,也是软件架构模式。比如流行的django框架就是mvc(MTV)模式。Model层负责和数据库交互,View层负责展现逻辑,Controller层负责粘合Model和View层,将各个部分解耦,使代码更易扩展和维护。
模型—视图—控制器(Model-View-Controller,MVC)模式是应用到面向对象编程的Soc(关注点分离Separation of Concerns原则)原则。模式的名称来自用来切分软件应用的三个主要部分,即:模型部分、视图部分和控制器。目的在于分离输入(control),处理逻辑(model),输出格式(view)。
- 视图:最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳,是模型的可视化表现。视图的例子有,计算机图形用户界面、计算机终端的文本输出、智能手机的应用图形界面、PDF文档、饼图和柱状图等。视图只是展示数据,并不处理数据。
- 控制器:中间的一层,就是"控制层"(Controller),是模型与视图之间的链接/粘附。模型与视图之间的所有通信都通过控制器进行。它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果
- 模型:最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。是核心的部分,代表着应用的信息本源,包含和管理(业务)逻辑、数据、状态以及应用的规则。
简单的理解:
- 控制模块用于获取用户输入,并将模型与视图建立联系
- 模型主要是从存储区获取数据
- 视图用于展示给用户,从模型获取的数据
数据关系
- View 接受用户交互请求
- View 将请求转交给Controller
- Controller 操作Model进行数据更新
- 数据更新之后,Model通知View更新数据变化
- View 更新变化数据
具体细节:
控制模块:可以被看作是一个介于用户,处理(model),显示(view)之间的中间人。它是用户请求的入口,也是应用处理的入口。控制模块接受用户输入,解析,决定哪一个model和view参与处理,因此,它决定了针对用户请求,选择何种view和model。
模型模块:处理业务的应用程序,model操作数据库,比如插入,更新,删除。每个模型会提供固定类型的数据给控制模块,另一方面,控制模块可以调用模型的不同方法处理数据,并将处理后的结果返回给视图模型
视图模块:主要用来显示,通过控制模块获取模型模块处理后的数据,并进行格式化的显示。通过控制模块选择view并显示反馈给用户。view模型的选择是基于模型模块的l选择和用户配置等等。
主要目的:
- 将数据和数据的展示隔离开来
- 使类的维护和实现更加简单
- 灵活地改变数据的存储和显示方式,两者都是独立的,因此可以灵活修改
2 适用场景
MVC是一个非常通用且大有用处的设计模式。实际上,所有流行的Web框架(Django、Rails 和Yii)和应用框架(iPhone SDK、Android和QT)都使用了MVC或者其变种,其变种包括模式—视图—适配器(Model-View-