解析iOS设计模式的开山之作
优化Objective-C编程实践的必修宝典
由此迈入移动开发高手行列
本书讲述如何在代码中应用创建型模式、结构型模式和行为模式等,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC在Cocoa Touch中的工作方式。 本书适用于那些已经具备Objective-C基础、想进行高级iOS开发,利用设计模式来提高软件开发效率的iPhone或iPad专业开发人员。
第一部分 设计模式初体验
第1章 你好,设计模式 2
1.1 这是一本什么书 2
1.2 开始前的准备 2
1.3 预备知识 3
1.4 似曾相识的设计 3
1.5 设计模式的起源——模型、视图和 控制器 4
1.5.1 在模型对象中封装数据和基 本行为 4
1.5.2 使用视图对象向用户展示信息 5
1.5.3 用控制器对象联系起模型和 视图 5
1.5.4 作为复合设计模式的MVC 5
1.6 影响设计的几个问题 6
1.6.1 针对接口编程,而不是针对实现编程 7
1.6.2 @protocol与抽象基类 7
1.6.3 对象组合与类继承 8
1.7 本书用到的对象和类 9
1.7.1 类图 9
1.7.2 对象图 12
1.8 本书如何安排模式的讲解 13
1.9 总结 13
第2章 案例分析:设计一个应用程序 14
2.1 想法的概念化 14
2.2 界面外观的设计 15
2.3 架构设计 17
2.3.1 视图管理 18
2.3.2 如何表现涂鸦 20
2.3.3 如何表现保存的涂鸦图 24
2.3.4 用户操作 27
2.4 所用设计模式的回顾 32
2.5 总结 33
第二部分 对象创建
第3章 原型 36
3.1 何为原型模式 36
3.2 何时使用原型模式 37
3.3 浅复制与深复制 38
3.4 使用Cocoa Touch框架中的对象 复制 39
3.5 为Mark聚合体实现复制方法 39
3.6 将复制的Mark用作“图样模板” 47
3.7 总结 49
第4章 工厂方法 50
4.1 何为工厂方法模式 50
4.2 何时使用工厂方法 51
4.3 为何这是创建对象的安全方法 51
4.4 在TouchPainter中生成不同画布 51
4.5 在Cocoa Touch框架中应用工厂 方法 57
4.6 总结 58
第5章 抽象工厂 59
5.1 把抽象工厂应用到TouchPainter 应用程序 60
5.2 在Cocoa Touch框架中使用抽象 工厂 66
5.3 总结 68
第6章 生成器 69
6.1 何为生成器模式 69
6.2 何时使用生成器模式 70
6.3 构建追逐游戏中的角色 71
6.4 总结 79
第7章 单例 80
7.1 何为单例模式 80
7.2 何时使用单例模式 81
7.3 在Objective-C中实现单例模式 81
7.4 子类化Singleton 85
7.5 线程安全 85
7.6 在Cocoa Touch框架中使用单例 模式 86
7.6.1 使用UIApplication类 86
7.6.2 使用UIAccelerometer类 86
7.6.3 使用NSFileManager类 86
7.7 总结 87
第三部分 接口适配
第8章 适配器 90
8.1 何为适配器模式 90
8.2 何时使用适配器模式 92
8.3 委托 92
8.4 用Objective-C协议实现适配器模式 93
8.5 用Objective-C的块在iOS 4中实现 适配器模式 99
8.5.1 块引用的声明 99
8.5.2 块的创建 100
8.5.3 把块用作适配器 100
8.6 总结 104
第9章 桥接 105
9.1 何为桥接模式 105
9.2 何时使用桥接模式 106
9.3 创建iOS版虚拟仿真器 106
9.4 总结 112
第10章 外观 113
10.1 何为外观模式 113
10.2 何时使用外观模式 114
10.3 为子系统的一组接口提供简化的 接口 114
10.4 在TouchPainter应用程序中使用外 观模式 117
10.5 总结 119
第四部分 对象去耦
第11章 中介者 122
11.1 何为中介者模式 122
11.2 何时使用中介者模式 124
11.3 管理TouchPainter应用程序中的 视图迁移 124
11.3.1 修改迁移逻辑的困难 126
11.3.2 集中管理UI交通 127
11.3.3 在Interface Builder中使用CoordinatingController 132
11.4 总结 135
第12章 观察者 136
12.1 何为观察者模式 136
12.2 何时使用观察者模式 138
12.3 在模型-视图-控制器中使用观察 者模式 138
12.4 在Cocoa Touch框架中使用观察者 模式 138
12.4.1 通知 139
12.4.2 键-值观察 139
12.5 在TouchPainter中更新CanvasView 上的线条 140
12.6 总结 149
第五部分 抽象集合
第13章 组合 152
13.1 何为组合模式 152
13.2 何时使用组合模式 154
13.3 理解TouchPainter中Mark的使用 154
13.4 在Cocoa Touch框架中使用组合 模式 163
13.5 总结 164
第14章 迭代器 165
14.1 何为迭代器模式 165
14.2 何时使用迭代器模式 167
14.3 在Cocoa Touch框架中使用迭代器 模式 167
14.3.1 NSEnumerator 167
14.3.2 基于块的枚举 168
14.3.3 快速枚举 169
14.3.4 内部枚举 170
14.4 遍历Scribble的顶点 170
14.5 总结 178
第六部分 行为扩展
第15章 访问者 180
15.1 何为访问者模式 180
15.2 何时应用访问者模式 182
15.3 用访问者绘制TouchPainter中的 Mark 182
15.4 访问者的其他用途 189
15.5 能不能用范畴代替访问者模式 189
15.6 总结 189
第16章 装饰 190
16.1 何为装饰模式 190
16.2 何时使用装饰模式 191
16.3 改变对象的“外表”和“内容” 192
16.4 为UIImage创建图像滤镜 192
16.4.1 通过真正的子类实现装饰 193
16.4.2 通过范畴实现装饰 201
16.5 总结 206
第17章 责任链 207
17.1 何为责任链模式 207
17.2 何时使用责任链模式 208
17.3 在RPG游戏中使用责任链模式 209
17.4 总结 214
第七部分 算法封装
第18章 模板方法 216
18.1 何为模板方法模式 216
18.2 何时使用模板方法 217
18.3 利用模板方法制作三明治 217
18.4 保证模板方法正常工作 224
18.5 向模板方法增加额外的步骤 225
18.6 在Cocoa Touch框架中使用模板 方法 228
18.6.1 UIView类中的定制绘图 228
18.6.2 Cocoa Touch框架中的其他 模板方法实现 228
18.7 总结 229
第19章 策略 230
19.1 何为策略模式 230
19.2 何时使用策略模式 231
19.3 在UITextField中应用验证策略 231
19.4 总结 239
第20章 命令 240
20.1 何为命令模式 240
20.2 何时使用命令模式 241
20.3 在Cocoa Touch框架中使用命令 模式 241
20.3.1 NSInvocation对象 242
20.3.2 NSUndoManager 243
20.4 在TouchPainter中实现撤销与恢 复 243
20.4.1 使用NSUndoManager实 现绘图与撤销绘图 244
20.4.2 自制绘图与撤销绘图的 基础设施 248
20.4.3 允许用户触发撤销与恢复 255
20.5 命令还能做什么 256
20.6 总结 257
第八部分 性能与对象访问
第21章 享元 260
21.1 何为享元模式 260
21.2 何时使用享元模式 262
21.3 创建百花池 262
21.4 总结 269
第22章 代理 270
22.1 何为代理模式 270
22.2 何时使用代理模式 271
22.3 用虚拟代理懒加载图像 272
22.4 在Cocoa Touch框架中使用代理 模式 277
22.5 总结 279
第九部分 对象状态
第23章 备忘录 282
23.1 何为备忘录模式 282
23.2 何时使用备忘录模式 283
23.3 在TouchPainter中使用备忘录模式 284
23.3.1 涂鸦图的保存 284
23.3.2 涂鸦图的恢复 285
23.3.3 ScribbleMemento的 设计与实现 286
23.4 Cocoa Touch框架中的备忘录模式 295
23.5 总结 297
本书系统全面地介绍了SNS的概念和理论基础、SNS的发展和现状、SNS热点产品及其设计、开放平台、APP应用开发、SNS网站的运营、SNS
《数字经济与数字货币》内容简介:数字经济正加速向经济运行的每个细节渗透,带来一场经济系统的变革,潜移默化地改变着经济运行的
《战时国民政府行政机构改革(1937~1945)》内容简介:本书旨在考察抗战时期国民政府实施行政机构改革的全过程,分析国民政府为实
本书是一本关于数字技术的科普书,作者通过50篇短小精干的短文,介绍了改变我们这个世界的50种数码知识,包括云计算、文化反赌、
《圣人是怎样炼成的》内容简介:一部让你轻松了解古代圣人成长史的爆笑漫画书,帮助孩子补充课外知识,增长见识。看半小时漫画,通
《乘用车车身结构设计与轻量化》内容简介:本书是“汽车轻量化技术与应用系列丛书”中的一册,主要围绕车身结构设计与轻量化展开。
DustyPhillips是一名加拿大自由软件开发人员、教师、武术家以及开源爱好者。他和ArchLinux社区以及其他开源社区有着紧密联系。他
本书是关于数字信号处理(DSP)原理、实现和应用的最新教程。全书在概述了数字信号的产生、定义和处理实例之后,详细讨论了差分方
《一图一例BIM钢筋算量》内容简介:本书共五章,第一章从BIM基础知识讲起,逐渐拓展到BIM在建筑行业领域的应用,使读者对BIM技术有
《围棋手筋二选一从入门到精通(级位篇)》内容简介:围棋手筋二选一从入门到精通是由少儿围棋教育专家、职业五段棋手赵守洵专为围
《MashupsWeb2.0开发技术(基于Amazon.Com)》介绍了mashup的底层技术,并且第一次展示了如何创建mashup的应用程序。Amazon.c...
《个人理财理论与实务(第二版)》内容简介:本教材突破以往同名教材编写侧重于金融企业理财或理财师代客理财的视角,本教材从个人
“如果你想学习如何用一款统计专家和数据挖掘专家所开发的免费软件包,那就选这本书吧。本书包括大量实际案例,它们充分体现了R软
《我看电商2》内容简介:《我看电商2》是行业畅销书《我看电商》的续集。《我看电商》自出版以来,连续印刷14 次,受到业界人士和广
《以兴趣为职业的“记”者:方汉奇传》内容简介:方汉奇是中国人民大学荣誉一级教授,是中国新闻学最早的三位博士生导师之一,在中
本书通过丰富的示例和详细的讲解,介绍了ReactNative这款JavaScript框架。在ReactNative中利用现有的JavaScript和React知...
你可能已经在不知不觉中成为了一名黑客。黑客不是“骇客”,它与计算机犯罪,甚至与开放源代码运动毫无瓜葛。黑客更多的是对压力
《JavaEE设计模式:Spring企业级开发最佳实践》结合Spring框架讲解了JavaEE设计模式,主要介绍了JavaEE应用程序设计和Spring框架的
《宋代家礼》内容简介:《宋代家礼》一书将宋代家礼作为一种集体写作规范的历史场景来观察,探讨了这一时期书写者在家礼文本中的自
《母婴健康照护棘手问题解答:预防出生缺陷 孕育健康宝宝》内容简介:随着预产期临近,准妈妈们最担心的是能否顺利生下宝宝,有什么