MVC 编程模型及其变种

MVC全称是Model View Controller, 这是一个模型(model)-查看(view)-调节器(controller)缩写,这是通过通用的编程模型非.MVC当为了分离数据和视图首次提出,数据和实体之间的关系.这就是关注点分离的设计理念,也是单一职责原则(Single-Resposibility Principle).

在我们的开发过程中, 视图用来展现界面, 我们的模型处理业务, 持有数据, 而控制器是他们之间的中间人.

GoF四人组觉得MVC是"一组用于构建用户界面的类的集合,是其他三个经典的设计模式的演变:观察者模式, 策略模式, 组合模式".详细的实现可能还会用到工厂模式,装饰器模式

以下介绍一下MVC及其变种

VC模式(view --> controller)

这样的模式用于简单的界面,代码量不多的情况.一般业务代码都是控制器里.

  1. 用户点击屏幕,传递一个点击事件给视图
  2. 视图把点击事件传递给控制器
  3. 控制器运行逻辑
  4. 控制器把新的数据返回给视图
  5. 视图展示新的数据给用户

VMC模式(view --> model --> controller)

这样的模式以下,视图先传递的对象是模型,模型能处理的话,根本就不通知控制器,能够减轻控制器的代码量

  1. 用户点击屏幕, 传递一个点击事件给视图
  2. 视图把点击事件传递给模型
  3. 模型处理点击事件
  4. 模型处理不了的和额外要处理的发消息给控制器
  5. 控制器运行逻辑
  6. 控制器把数据返回给模型
  7. 模型再把数据返回给视图
  8. 视图展示新的数据给用户

VCM模式(view --> controller --> model)

这样的就是我们最常见的mvc模式了

  1. 用户点击屏幕, 传递一个点击事件给视图
  2. 视图把点击事件传递给控制器
  3. 控制器调用模型
  4. 模型运行逻辑
  5. 模型通知控制器,并返回数据
  6. 控制器接到数据后返回给视图
  7. 视图展示新数据

事实上,折腾这些,最后目的是了解边界,因此,人们可以并行工作.

版权声明:本文博主原创文章。博客,未经同意不得转载。

MVC 编程模型及其变种的更多相关文章

  1. MVC编程模型

    MVC 编程模型 MVC 是三个 ASP.NET 开发模型之一. MVC 是用于构建 web 应用程序的一种框架,使用 MVC (Model View Controller) 设计: Model(模型 ...

  2. ASP.NET MVC编程——模型

    1 ViewModel 是一种专门提供给View使用的模型,使用ViewModel的理由是实体或领域模型所包含的属性比View使用的多或少,这种情况下实体或领域模型不适合View使用. 2模型绑定 默 ...

  3. MVC笔记之一:MVC编程模型

    MVC是ASPX.NET用于构造Web应用的一种框架,和传统的ASPX.NET开发模式(Web Form)在架构上相同,同样采用三层框架实现,但相比传输开的模式,各层架构更加规范. 传统三层架构: V ...

  4. Atitit.web三大编程模型 Web Page Web Forms 和 MVC

    Atitit.web三大编程模型 Web Page    Web Forms 和 MVC 1. 编程模型是 Web Forms 和 MVC (Model, View, Controller). 2.  ...

  5. Atitit.web三编程模型 Web Page Web Forms 和 MVC

    Atitit.web三编程模型 Web Page    Web Forms 和 MVC 1. 编程模型是 Web Forms 和 MVC (Model, View, Controller). 2. W ...

  6. ASP.NET Core MVC I/O编程模型

    1. ASP.NET Core MVC I/O编程模型 1.1. I/O编程模型浅析 1.2. 同步阻塞I/O 1.3. 同步非阻塞I/O 1.4. 异步I/O 1.5. 总结 1.1. I/O编程模 ...

  7. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  8. 利用MVC编程模式-开发一个简易记事本app

    学了极客学院一个开发记事本的课程,利用自己对MVC编程模式的简单理解重写了一遍该app. github地址:https://github.com/morningsky/MyNote MVC即,模型(m ...

  9. MVC编程模式

    MVC编程模式 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表) ...

随机推荐

  1. 重新想象 Windows 8 Store Apps (22) - 文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件

    原文:重新想象 Windows 8 Store Apps (22) - 文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件 [源码下载] 重新想象 Windows 8 Store Apps ( ...

  2. 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题

    servlet默认是存在线程安全问题的,但是说白了,servlet的线程安全问题实际上就是多线程的线程安全问题,因为servlet恰巧是一个多线程才会出现安全性问题. 浏览器每次通过http协议去提交 ...

  3. HDU 4777 Rabbit Kingdom(树状数组)

    HDU 4777 Rabbit Kingdom 题目链接 题意:给定一些序列.每次询问一个区间,求出这个区间和其它数字都互质的数的个数 #include <cstdio> #include ...

  4. c++分割字符串(类似于boost::split)

    由于c++字符串没有split函数,所以字符串分割单词的时候必须自己手写,也相当于自己实现一个split函数吧! 如果需要根据单一字符分割单词,直接用getline读取就好了,很简单 #include ...

  5. Reveal:分析iOS UI该武器

    Reveal是分析iOS应用UI的利器: Reveal可以在执行时调试和改动iOS应用程序.它能连接到应用程序,并同意开发人员编辑各种用户界面參数.这反过来会马上反应在程序的UI上.就像用FireBu ...

  6. 《数字图像处理原理与实践(MATLAB文本)》书代码Part7

    这篇文章是<数字图像处理原理与实践(MATLAB文本)>一本书的代码系列Part7(由于调整先前宣布订单,请读者注意分页程序,而不仅仅是基于标题数的一系列文章),第一本书特色186经225 ...

  7. Linux平台下裸设备的绑定:

    Linux平台下裸设备的绑定: 运用RAW绑定 方法一 raw的配置(1) [root@qs-dmm-rh2 mapper]# cat /etc/rc.local #!/bin/sh # # This ...

  8. 有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)

    作者:覃超链接:http://www.zhihu.com/question/19977889/answer/13539702来源:知乎 平时就经常实践. 整个公司的code review就是使用这个. ...

  9. 综合第一篇文章(带钩Quora)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDc4MzAyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  10. 编写ruby扩展库

    # Loads mkmf which is used to make makefiles for Ruby extensions require 'mkmf' # Give it a name ext ...