原创文章,欢迎转载。转载请注明:关东升的博客

MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,它最早出现在Smalltalk语言中。现在,很多计算机语言和架构都采用了MVC模式。

MVC模式概述

MVC模式是一种复合设计模式,由 “观察者”(Observer)模式、“策略”(Strategy)模式和“合成”(Composite)模式等组成。MVC模式由3个部分组成,如图所示,这3个部分的作用如下所示。

  • 模型。保存应用数据的状态,回应视图对状态的查询,处理应用业务逻辑,完成应用的功能,将状态的变化通知视图。
  • 视图。为用户展示信息并提供接口。用户通过视图向控制器发出动作请求,然后再向模型发出查询状态的申请,而模型状态的变化会通知给视图。
  • 控制器。接收用户请求,根据请求更新模型。另外,控制器还会更新所选择的视图作为对用户请求的回应。控制器是视图和模型的媒介,可以降低视图与模型的耦合度,使视图和模型的权责更加清晰,从而提高开发效率。

对应于哲学中的“内容”与“形式”, 在MVC模型中,模式是“内容”,它存储了视图所需要的数据,视图是“形式”,是外部表现方式,而控制器是它们的媒介。

Cocoa Touch中的MVC模式

上面我们讨论的是通用的MVC模式,而Cocoa和Cocoa Touch框架中的MVC模式与传统的MVC模式略有不同,前者的模型与视图不能进行任何通信,所有的通信都是通过控制器完成的,如图所示。

在Cocoa Touch框架的UIKit框架中,UIViewController是所有控制器的根类,如UITableViewController、UITabBarController和UINavigationController。UIView是视图和控件的根类。

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
  ​
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

最新文章

  1. win10 下visual studio 2015 在调试模式下不能跟踪源文件
  2. 函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法
  3. kali/centos 更新 java
  4. Arrays.asList()注意
  5. IIS内存溢出-设置IIS的应用程序池
  6. 再详细的介绍一下Unity5的AssetBundle
  7. 想学习一下CSS函数
  8. VC调用系统的调色板
  9. 7.Composer的安装和使用
  10. ROS中Mangle解析
  11. Android关闭系统锁屏
  12. 洛谷 P2205 解题报告
  13. WPF中的常用布局
  14. 10--Python入门--异常处理
  15. Python全栈之路----函数----作用域
  16. android 字体加粗
  17. 32网络通信之Poll模型
  18. redis : 桌面管理工具 redis-desktop-manager使用指南
  19. [控件]unigui移动端下Unidatepicker时间显示解决方案
  20. C#后台调用LPT1端口实现小票机打印方法。

热门文章

  1. 温故而知新 通过chrome tool 查看是否产生闭包
  2. C语言复杂声明解读简明方法
  3. Atitit.国际化中的日期与钱符号问题
  4. 【Android】13.4 使用SQLite.NET.Async-PCL访问SQLite数据库
  5. DB2检测表字段改动的方法(不用触发器)
  6. dubbo接口测试
  7. ios界面跳转
  8. 关于Unity的C#基础学习(三)
  9. Thinkphp整合各个功能
  10. jdk 配置时时区设置