主题 |
内容 |
第一天:引子(破冰) |
从海盗分金子谈起
|
第1单元 SOLID(上午):该单元介绍SOLID五大设计原则 |
1. 单一性原则
一个类只干一件事情
从ViewController中剥离UITableView
2. 开闭原则
对扩展开放,对修改封闭
从switch-case谈起
3. 里氏替换原则
父类,子类?
对多态的重新认识
白马与马
4. 依赖倒置原则
依赖于抽象,而不是依赖于具体
模版方法
从WebService到JSON
5. 接口隔离原则
类之间的依赖,建立于最小粒度的接口
看人下菜碟
宽窄接口
6. 迪米特法则
不要和陌生人说话
7. 总结
组合,还是继承?
可插拔技术
面向接口编程 |
第2单元 创建型设计模式(下午):该单元介绍创建型设计模式 |
1. 简单工厂
定义及UML图、通用代码实现
iOS中的使用场景:ViewController的viewDidLoad方法
iOS中的一个例子:文件存储
2. 工厂模式
定义及UML图、通用代码实现
简单工厂与工厂的微小区别
iOS中的使用场景:两步对象创建法
反射与工厂模式的配合
3. 抽象工厂模式
定义及UML图、通用代码实现
与工厂模式的区别
文件存储的抽象工厂实现
4. 单例模式
定义及UML图、通用代码实现
多例
iOS的内部支持:UIApplication和UIAccelerometer
iOS中的使用场景:单例宏
5. 原型模式
定义及UML图、通用代码实现
浅拷贝和深拷贝
NSCoping
NSCoding
App中的使用场景:再来一单
6. 生成器模式
定义及UML图、通用代码实现
编写一个例子:绘制笑脸
变体:Director的蜕化 |
第二天:引子(破冰) |
从大象背香蕉谈起 |
第1单元 结构型设计模式(上午):该单元介绍结构型设计模式 |
1. 委托模式
神奇的delegate
委托模式的使用场合
2. 适配器模式
定义及UML图、通用代码实现
类适配器和对象适配器
一个例子:变压器
iOS中的内部支持:Delegate以及UITableView
a) 使用Block实现适配器模式
3. 桥接模式
定义及UML图、通用代码实现
两个维度的简单工厂
加法,还是乘法?
编写一个例子:蜡笔与水彩笔
4. 代理模式
定义及UML图、通用代码实现
静态代理和动态代理
远程代理
虚拟代理
保护代理
iOS中的内部支持:NSProxy |
第2单元 结构型设计模式(下午) |
1. 组合模式
温习一下递归算法
定义及UML图、通用代码实现
实现的两种方式
一个现实中的例子:山上有座庙
iOS中的内部支持:UIView的层级结构
2. 享元模式
定义及UML图、通用代码实现
不变模式
享元是多例与不变模式的组合
自己编写一个例子:围棋
3. 装饰器模式
定义及UML图、通用代码实现
编写一个例子:炒菜
给工厂增加新方法
使用Category来实现装饰器模式
4. 外观模式
定义及UML图、通用代码实现
与单一职责设计原则的冲突 |
第三天:第1单元 行为型设计模式(上午):该单元介绍行为型设计模式 |
1. 职责链模式
定义及UML图、通用代码实现
写一个例子:游戏中的伤害计算
iOS中的内部支持:UIView中的事件处理和动作消息
2. 模版方法模式
定义及UML图、通用代码实现
基于策略模式的排序算法
iOS中的内部支持:UIView的钩子方法drawRect
3. 命令模式
定义及UML图、通用代码实现
例子1:玉皇大帝派太上老君封孙悟空为齐天大圣
回滚(undo)
在iOS中的应用:NSInvocation与NSUndoManager
4. 备忘录模式
定义及UML图、通用代码实现
回滚机制的另一种实现
例子:单机游戏的保存和加载
宽窄接口:IMemento |
第2单元 行为型设计模式(下午):该单元介绍行为型设计模式 |
1. 迭代器模式
定义及UML图、通用代码实现
在iOS中的内部支持:NSEnumerator及延伸
2. 策略模式
定义及UML图、通用代码实现
App中的应用:基于UITextView的验证器
3. 观察者模式
定义及UML图、通用代码实现
例子:RSS
在iOS中的内部支持1:KVO
在iOS中的内部支持2:NSNotificationCenter
4. 中介者模式
定义及UML图、通用代码实现
编写一个例子:房产中介
在iOS中的应用:UIViewController中控件间通信
5. 状态模式
定义及UML图、通用代码实现
写一个例子:空调遥控器
在App中的应用:用户登录 |