MVC由Trygve Reenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系统的构成基础。MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离。MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系。对于界面设计可变性的需求,MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件。

视图部件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。

控制器部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。

模型部件保存由视图显示,由控制器控制的数据;它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。

模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图所示。

图 4 MVC组件类型的关系和功能

转载于:https://www.cnblogs.com/guushuuse/archive/2009/04/26/1443869.html

MVC(Model/View/Controller,模型/视图/控制)相关推荐

  1. MVC(Model View Controller)模型-视图-控制器

    MVC与模板概念的理解       MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现 ...

  2. MVC(Model View Controller)框架

    MVC框架 同义词 MVC一般指MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一 ...

  3. Qt Model/View(MVD)模型分析

           最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道M ...

  4. C++Qt开发——Mode View(模型视图)

    Model/View(模型/视图)结构 简介 Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图 ...

  5. Qt新手入门指南 - 如何创建模型/视图(二)

    每个UI开发人员都应该了解ModelView编程,本教程的目标是为大家提供一个简单易懂的介绍. Qt 是目前最先进.最完整的跨平台C++开发工具.它不仅完全实现了一次编写,所有平台无差别运行,更提供了 ...

  6. pyqt5 qstring在哪个库_PyQt模型/视图结构编程示例:QStringListModel的用法

    引言 Python是一种面向对象的高级动态编程语言,相比于其它如C/C++语言,具有上手快.代码少.开发效率高的特点,Qt是跨平台的C++图形用户界面应用程序开发框架,是当前主流的GUI开发工具之一, ...

  7. Qt新手入门指南 - 如何创建模型/视图(四)

    每个UI开发人员都应该了解ModelView编程,本教程的目标是为大家提供一个简单易懂的介绍. Qt 是目前最先进.最完整的跨平台C++开发工具.它不仅完全实现了一次编写,所有平台无差别运行,更提供了 ...

  8. MVC的全名是Model View Controll

    MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范.它是用一种业务逻辑.数据与界面显示分离的方法 ...

  9. 被设计用于控制计算机英语怎么说,关于计算机专业MVC简介概述的毕业设计论文英文英语外文文献翻译成品资料:模型-视图-控制器(MVC)介绍(中英文双语对照).docx...

    本文是中英双语对照毕业设计论文外文文献翻译,下载之后直接可用!省去您找文献.pdf整理成word以及翻译的时间!一辈子也就一次的事! 文献引用作者出处信息:Vivek Chopra Beginning ...

  10. Android开发模式:模型—视图—主导器模式

    我们有可能使用过MVC(Model-View-Controller)模式,但当我们用更优的方法测试Android代码时,使用MVP(模型-视图-主导器:Model-View-Presenter)模式可 ...

最新文章

  1. 范数和机器学习中的范数
  2. java.io.NotSerializableException: org.apache.shiro.util.SimpleByteSource at java.io.ObjectOutputStr
  3. 职场中不要问程序员这五类问题
  4. oracle仲裁磁盘是一块磁盘吗,基于ASM冗余设计的架构,仲裁磁盘组应该如何去规划?...
  5. 无法开启计算机,Win7下鼠标右键无法开启计算机属性怎么办?
  6. Windows11电脑锁屏快捷键是什么
  7. XML Schema语法规则
  8. nginx php上传大小设置
  9. 20-100-040-安装-Centos 7.5 安装MYSQL
  10. Bootstrap基础二 网格系统
  11. Git详解(2)——Git基础
  12. 并联机构工作空间求解_断路器机构弹簧的设计
  13. 虚拟局域网(VLAN)中端口tagged和untagged在多种情况下的作用
  14. 非线性思维 -- 大前研一
  15. HWADDR配置错误导致network重启失败处理
  16. 机械制图及计算机绘图试题库,机械制图及计算机绘图--试题库2016版.pdf
  17. IoT全品类全场景来了,但5G时代“大雁群飞”仍需紧盯“服务”
  18. Hazelcast IMDG参考中文版手册-第二章-入门
  19. 云原生、工业互联网之浅见
  20. md格式 linux,Linux命令基本格式以及文件处理命令.md

热门文章

  1. Java Socket编程基础实例
  2. 微服务架构及其最重要的10个设计模式
  3. 工作10年才懂的道理,早知道职位比现在高两级
  4. Docker 指定数据储存目录
  5. 文本编辑器Vim/Neovim任意代码执行漏洞(CVE-2019-12735)
  6. netcat 传输文件
  7. python类 析构方法
  8. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
  9. python操作excel的读写
  10. php5.6 连接SQL SERVER