是时候祭出这张图了啦~!看过《斯坦福大学公开课:iOS 7应用开发》的宝宝们应该对此图不陌生哦。顺便说一句,真的非常喜欢Paul Hegarty教授!!
ios_mvc.jpgMVC是什么?
是一种设计模式,M-model,V-view,C-controller.
- 数据模型:负责存储,定义,操作数据
- 视图:用来展示数据给用户,和用户进行操作交互
- 控制器是M与V的协调者,控制器获取数据,将数据交给视图展示在界面上
Controller和View之间可以通信,从图中也可以看出是代理模式,典型的,大家想下UITableView的代理和Controller之间的通信。当数据更新的时候,Controller和Modle之间进行通信,方式是Notification和KVO,这个方式就像一个广播一样,Model发信号,Controller设置监听接受信号,当有数据更新时就发信号给Controller,Model和View不能直接进行通信,这样会违背MVC设计模式。
你还熟悉什么设计模式?
代理模式:
代理模式是一种回调机制,由三部分组成:代理对象,委托者,协议。委托者需要定义协议方法,代理对象实现协议方法,并且需要建立代理关系才可以通信,比如这句代码tabelView.delegate = self; 代理是一对一的关系。那么时候用代理呢? 一般用于View和Controller之间的通信,且实现多个接口的时候,用代理是非常Nice的!
单例模式:
说白了就是一个类不通过alloc方式创建对象,而是用一个静态方法返回这个类的对象。系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为,比如想获得[UIApplication sharedApplication];任何地方调用都可以得到 UIApplication的对象,这个对象是全局唯一的。
实现单例分两种情况:ARC+GCD 和MRC
给单例类添加了一个color属性 写法如下:
ARC+GCD
MRC现在几乎不用,代码就暂时不贴了。
观察者模式:
KVO键值观察。键值观察机制是一种能使得对象获取到其他对象属性变化的通知 ,极大的简化了代码。实现 KVO 键值观察模式,被观察的对象必须使用 KVC 键值编码来修 改它的实例变量,这样才能被观察者观察到。KVC是KVO的基础。
网友评论