《从零开始学Swift》学习笔记(Day67)——Cocoa Touch设计模式及应用之MVC模式

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

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

 

MVC模式概述

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

  • 模型。保存应用数据的状态,回应视图对状态的查询,处理应用业务逻辑,完成应用的功能,将状态的变化通知视图。

  • 视图。为用户展示信息并提供接口。用户通过视图向控制器发出动作请求,然后再向模型发出查询状态的申请,而模型状态的变化会通知给视图。

  • 控制器。接收用户请求,根据请求更新模型。另外,控制器还会更新所选择的视图作为对用户请求的回应。控制器是视图和模型的媒介,可以降低视图与模型的耦合度,使视图和模型的权责更加清晰,从而提高开发效率。

      

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

 

CocoaTouch中的MVC模式

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

 

Cocoa Touch框架的UIKit框架中,UIViewController是所有控制器的根类,如UITableViewControllerUITabBarControllerUINavigationControllerUIView是视图和控件的根类。

 

 

欢迎关注关东升新浪微博@tony_关东升
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

 

 


http://www.niftyadmin.cn/n/1036385.html

相关文章

【MySQL】MySQL中常用的函数

相信大家在做一些SQL的代码题时,看题解,很多都用到了MySQL中自带的库函数,今天就来简单说一些MySQL中的常用函数,用起来也是很简单的。 1、控制流程函数(等价于if else语句)2、字符串函数3、数值函数4、日期…

《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件

原创文章,欢迎转载。转载请注明:关东升的博客应用与用户进行交互,依赖于各种各样的事件。事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的。响应者链在事件处理中是非常重要的&…

【MySQL】数据库的事务和MySQL隔离级别分析

hello 大家好!今天来聊聊关于数据库事务的一些事情。说到事务,我相信大家应该都不陌生,多多少少也知道其中的一些事情。今天着重聊聊MySQL中事务的隔离级别。上车上车…… 文章目录一、什么是事务?二、MySQL中的事务和隔离级别1、…

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

原创文章,欢迎转载。转载请注明:关东升的博客在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C语言,但是UI部分只能使用Objective-C语言。选择语言Swift语言出现后,苹果公…

《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-C API映射

原创文章,欢迎转载。转载请注明:关东升的博客Swift与Objective-C API映射在混合编程过程中Swift与Objective-C调用是双向的,由于不同语言对于相同API的表述是不同的,他们之间是有某种映射规律的,这种API映射规律主要体…

【算法题】LeetCode691、贴纸拼词(剪枝+记忆化搜索)

hello hello,好久不见。 今天我们来看一道算法题:LeetCode691 贴纸拼词。这是一道hard难度的题,还是很有难度的。 题意:给你一堆贴纸stickers,和一个英文单词。每一种贴纸都有无限张,并且每一张贴纸能剪切…

《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射

原创文章,欢迎转载。转载请注明:关东升的博客如果引入必要的头文件,在Objective-C语言中可以使用C数据类型。而在Swift语言中是不能直接使用C数据类型,苹果公司为Swift语言提供与C语言相对应数据类型。这些类型主要包括&#xff1…

【计网】(一) 集线器、网桥、交换机、路由器等概念

这篇文章将介绍计算机网络中的一些基础概念,以及生活中我们所常见的一些设备(交换机、路由器等)的作用。 目录✅ 互联网的概念✅ 什么是网络协议✅ 网络互联模型✅ 计算机之间是如何通信的🐾 网线直连🐾 同轴电缆(Coax…