概述


  • Model-View-Controller(MVC),即模型-视图-控制器。
  • MVC将软件系统分成三大部分:Model,View,Controller,三个部分通过某种机制通信

M、V、C的职能


  • M(Model)

    • 应用程序的核心,用于处理应用程序数据逻辑部分
  • V(View)
    • 处理应用程序数据的显示
    • 通常依据Model创建
  • C(Controller)
    • 处理用户的交互
    • 从视图读取数据,控制用户输入,并向模型发送数据

M、V、C之间的通信


  • 图解(出自斯坦福大学CS193课程的课件

  • Controller与Model之间的通信
    • Controller可以主动向Model发起会话
    • Model职能被动地回复Controller发起的会话,不能主动请求Controller
  • Controller与View
    • Controller可以完全操控View,因为Controller要把View显示在屏幕上
    • View可以向Controller发送消息,因为View要将用户的动作传递给Controller
  • Model与View之间无法直接通信
  • 总结
    • Controller对Model:

      • 通过API
    • C对V:
      • Outlet
    • V对C:
      • Target-action,Delegate,Datasource
    • M对C:
      • Notification,KVO

V与C之间通信的方式


  • 目标操作(target-action)

    • Controller内会悬挂一个目标(target),并将一个操作(action)给将要和它交流的视图对象,如图解中的target与action
    • 如,为View中的某个按钮添加一个监听事件,当按钮被点击时就执行相应的处理。
  • 委托
    • 为视图中的某个控件设置代理,当控件被操作时发送相应的代理消息,执行相应的代理方法,实现View与Controller的通信
    • 如,tableView的代理
  • 数据源
    • Controller通过数据源将View需要的数据传递给View,实现Controller与View的通信

设计模式-01-MVC的更多相关文章

  1. Android 设计模式之MVC模式

    说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...

  2. iOS设计模式(01):观察者

    iOS设计模式(01):观察者 iOS-Observer-Pattern 什么是观察者模式 什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的时候,你不用去任何地方,只需要将你的个人地址信息以及订阅信 ...

  3. python 设计模式之MVC模式

    一.简单介绍 mvc模式  the  model-view-controller pattern mvc模式是一个运用在软件工程中的设计模式.mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试 ...

  4. Python设计模式之MVC模式

    # -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...

  5. iOS开发——高级篇——iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  6. 设计模式-14 MVC模式

    一 MVC设计模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,它是一个存在于服务器 表达层的模型,它将应用分开,改变应用之间的高度耦合 MVC设计模式将 ...

  7. 【设计模式】MVC模式

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  8. mvc设计模式和mvc框架的区别

    Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...

  9. iOS常用设计模式:MVC、单例、代理、观察者。

    MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller: ...

  10. 读书笔记-常用设计模式之MVC

    1.MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,它最早出现在SmallTalk语言中.MVC模式是一种复合设计模式,由“观察者”(Observ ...

随机推荐

  1. 托管调试助手“NonComVisibleBaseClass”检测到问题

    最近 一次在研究 自动化测试框架White ,程序总是报   “托管调试助手“NonComVisibleBaseClass”在“d:\xxxxxxxxxx.vshost.exe”中检测到问题.” 其他 ...

  2. [Design Patterns] 2. Design principle

    Single Responsibility Principle 类的设计趋向于:Use Case Diagram --> (derived) --> Detail Open-Closed ...

  3. Cocos2d-x数据存储

    分别是使用UserDefault,内置文件管理和sqlite3数据库的一般方式: 主要代码: bool DataScene::init(){ if (!Layer::init()){ return f ...

  4. C++中指针常量和常量指针的区别

    在C++学习使用过程中,每个人都不可避免地使用指针,而且都或多或少的接触过常量指针或指针常量,但是对这两个的概念还是很容易搞糊涂的. 本文即是简单描述指针常量和常量指针的区别. 常量指针 定义: 又叫 ...

  5. 我的WCF学习与强化系列文章

    1.WCF服务创建与使用(请求应答模式) 2.WCF服务创建与使用(双工模式) 3.WCF序列化 4.WCF实现方法重载 5.WCF会话(Session)与实例(Instance)管理 后面会继续更新 ...

  6. Angular系列------AngularJS入门教程:导言和准备(转载)

    学习AngularJS的一个好方法是逐步完成本教程,它将引导您构建一个完整的AngularJS web应用程序. 该web应用是一个Android设备清单的目录列表,您可以筛选列表以便查看您感兴趣的设 ...

  7. percona-toolkit介绍及安装

    percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,包括: 1. 检查master和slave数据的一致性 2. 有效地 ...

  8. mysql update时报错You are using safe update mode

    在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常. ) Error Code: . You are using safe upda ...

  9. [Code] C#与js的正则表达式

    元字符: 单个字符: . [] 限定符: * + ? {n} {n,} {n,m} 头尾: ^ $' 其他: | () 正则表达式在js和C#中都有. C#中: 创建: var regex = new ...

  10. C#中this的 四种 用法

    C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码. this用法1:限定被相似的名称隐藏的成员 /// < ...