用户
 找回密码
 入住 CI 中国社区

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 39077|回复: 49
收起左侧

什么是 MVC 模式?

    [复制链接]
发表于 2008-12-7 11:55:11 | 显示全部楼层 |阅读模式
MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。

MVC 由 Trygve Reenskaug 提出,最早被应用在 SmallTalk-80 环境中。模型—视图—控制器模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:
  • 控制器 - 程序员编写程序应有的功能(实现算法等等)
  • 视图 - 界面设计人员进行图形界面设计
  • 模型 - 数据库专家进行数据管理和数据库设计

ModelViewControllerDiagramZh.png

模型(Model)“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。

视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。

控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。
发表于 2009-2-25 14:14:08 | 显示全部楼层
模型 包含与您的数据库和其他数据结构相关的所有代码。如果您具有一个名为 pages 的表,则您具有一个模型,其中具有用于从表中选择、创建、更新和删除记录的函数。
视图 包含所有显示和 UI 元素 — JavaScript 代码、Cascading Style Sheets (CSS)、HTML 甚至 PHP。
控制器 将一切联系在一起。控制器中的每个函数表示一个目的地或路线。如果您具有一个名为 /about 的目的地,则控制器将具有一个名为 about() 的函数。      感觉这个容易理解

点评

这个好  发表于 2017-3-10 10:58
恩恩,虽然我自己说不清,但是这个哥们说得很贴近我想的  发表于 2011-9-2 10:16
这个更好理解。  发表于 2011-8-26 18:56
发表于 2014-6-7 15:39:29 | 显示全部楼层
看了,慢慢加深理解吧。
发表于 2016-5-25 11:46:22 | 显示全部楼层
写的有点太正式了
发表于 2009-2-21 08:41:33 | 显示全部楼层
发表于 2009-2-25 14:10:06 | 显示全部楼层
一头雾水   M就是数据库   V相当于前台页面   C相当于后台   只不过他们都相对独立   
弱弱的问下  这样的理解正确吗?
发表于 2009-3-18 22:26:38 | 显示全部楼层
4# fengxuedh 感觉楼上的讲的更通俗
发表于 2009-3-19 01:44:55 | 显示全部楼层
一头雾水   M就是数据库   V相当于前台页面   C相当于后台   只不过他们都相对独立   
弱弱的问下  这样的理解正确吗?
fengxuedh 发表于 2009-2-25 14:10

其实可以看一下《深入浅出设计模式》,末尾部分有MVC应用于web的介绍,很“深入浅出”
发表于 2009-4-2 15:11:18 | 显示全部楼层
如果没有接触过这方面的知识,第一次看一定会一头雾水..
我想比较容易弄明白的方法是先看例子,然后再学理论...
发表于 2009-6-23 15:42:53 | 显示全部楼层
我一直都很雾水!
发表于 2009-6-26 20:45:21 | 显示全部楼层
模型 包含与您的数据库和其他数据结构相关的所有代码。如果您具有一个名为 pages 的表,则您具有一个模型,其中具有用于从表中选择、创建、更新和删除记录的函数。
视图 包含所有显示和 UI 元素 — JavaScript 代码 ...
fengxuedh 发表于 2009-2-25 14:14

这个有点明白了
发表于 2009-6-28 10:27:11 | 显示全部楼层
PHP_MVC架构,建议大家同时学习CI与ZF。
如果这二个能全部精通,找工作那应该是顶呱呱。。。

本版积分规则