商家名称 | 信用等级 | 购买信息 | 订购本书 |
Objective-C编程之道:iOS设计模式解析 [平装] | |||
Objective-C编程之道:iOS设计模式解析 [平装] |
《Objective-C编程之道:iOS设计模式解析》:解析IOS设计模式的开山之作、优化Obiective-C编程实践的必修宝典、由此迈入移动开发高手行列。
苹果公司的AppStore拥有超过20万个应用(每秒都在增加)供用户选择,正深刻地改变着软件行业。每天都有更多的iOS开发者想投入到这一潮流,希望凭藉下一个杀手级应用发家致富。《Objective-C编程之道:iOS设计模式解析》的目标正是带领读者完成从新手到高手的转变。关注底层的设计模式而非一味只顾着写代码,从而开发出更加高效、实用和专业的应用。
iOS应用程序的基础CocoaToucll框架内容丰富、结构优美,通过将各种设计模式应用到其基础结构中.为第三方开发者提供了很好的可扩展性和灵活性。因此,要充分利用这一框架,应当深刻理解并恰当应用设计模式。《Objective-C编程之道:iOS设计模式解析》受到GoF的经典著作《设计模式》的启发。旨在引导大家掌握如何在iOS平台上以Objective-C语言实现CocoaTouch开发所要用到的传统设计模式。
在编写代码的过程中。你可能在一定程度上运用了一些设计模式。只是并没有意识到或充分利用它们。基于此,《Objective-C编程之道:iOS设计模式解析》深入解析了这些设计模式。特定模式方法的实现将向iOS应用开发人员展示其非凡价值。你将掌握单例、抽象工厂、责任链和观察者等经典模式,还会发现一些不太知名但非常有用的模式,比如备忘录、组合、命令和中介者等。
学完《Objective-C编程之道:iOS设计模式解析》,你将学会、各种设计模式的基本概念、根据不同场景,将设计模式应用于代码中、用设计模式来改进应用程序、提高软件开发的效率。
“每学习一门新的编程语言。我都会去买一本介绍其设计模式的书。这些书从来没有让我失望过。从长远来看,我获得的回报十倍于我的付出,本书也不例外。作者首先介绍每一种设计模式的理论和方法。然后给出代码示例。简单地讲,本书结构清晰,易于理解。物超所值。”
——亚马逊读者评论
“这是一本启人深思的书。在学习如何将设计模式应用于复杂的lOS应用的同时,我开始静下来思考怎样优化既有代码。向每一位中高级iOS开发人员推荐本书。”
——亚马逊读者评论
作者:(美国)钟冠贤 (Carlo Chung) 译者:刘威
第一部分 设计模式初体验
第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 作为复合设计模式的MVC5
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 使用CocoaTouch框架中的对象复制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 在CocoaTouch框架中应用工厂方法57
4.6 总结58
第5章 抽象工厂59
5.1 把抽象工厂应用到TouchPainter应用程序60
5.2 在CocoaTouch框架中使用抽象工厂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 子类化Singleton85
7.5 线程安全85
7.6 在CocoaTouch框架中使用单例模式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的块在iOS4中实现适配器模式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 在InterfaceBuilder中使用CoordinatingController132
11.4 总结135
第12章 观察者136
12.1 何为观察者模式136
12.2 何时使用观察者模式138
12.3 在模型-视图-控制器中使用观察者模式138
12.4 在CocoaTouch框架中使用观察者模式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 在CocoaTouch框架中使用组合模式163
13.5 总结164
第14章 迭代器165
14.1 何为迭代器模式165
14.2 何时使用迭代器模式167
14.3 在CocoaTouch框架中使用迭代器模式167
14.3.1 NSEnumerator167
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中的Mark182
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 在CocoaTouch框架中使用模板方法228
18.6.1 UIView类中的定制绘图228
18.6.2 CocoaTouch框架中的其他模板方法实现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 NSUndo Manager242
20.4 在Touch Painter中实现撤销与恢复243
20.4.1 使用NSUndo Manager实现绘图与撤销绘图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 在CocoaTouch框架中使用代理模式277
22.5 总结279
第九部分 对象状态
第23章 备忘录282
23.1 何为备忘录模式282
23.2 何时使用备忘录模式283
23.3 在Touch Painter中使用备忘录模式284
23.3.1 涂鸦图的保存284
23.3.2 涂鸦图的恢复285
23.3.3 Scribble Memento的设计与实现286
23.4 Cocoa Touch框架中的备忘录模式295
23.5 总结297
版权页:
插图:
生成器
选择建造自己的房子的人会把工程外包给承包商。单一承包商不能建造整个房子,他将其分解为几个部分,然后转包给几个实际的建筑商(builder),他们懂得如何将零部件组装起来。房子由风格、颜色和尺寸各不相同的部件组成。客户告诉承包商房子里都要有什么,然后承包商协调各房屋建筑商,决定需要做什么。应该如何建造,建筑商就如何施工。建房子是个复杂过程,单凭一双手就想建房子,即便可能也非常困难。如果承包商(指导者)与懂得如何建造的建筑商相互协调,这一过程将简单得多且更易管理。
有时,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句)。如果能够把构建过程分解为客户一指导者一生成器的关系,那么过程将更容易管理与复用。针对此类关系的设计模式称为生成器。
本章将讨论生成器模式的概念。后面几节,也会讨论如何使用这一模式来生成RPG游戏中带有复杂特征的角色。
6.1 何为生成器模式
除了客户与其所要的产品,生成器模式还包含两个重要角色:Director(指导者)和Builder(生成器)。Builder知道究竟如何在缺少某些特定信息的情况下建造产品(什么)。Director知道Builder应该建造什么,以参数向其提供缺少的信息来建造特定产品。什么与如何有点儿难懂。尽管Director知道Builder应该建造什么,这并不意味着Director知道具体Builder究竟是什么。它们的静态关系如图6-1中的类图所示。
Builder是一个抽象接口,声明了一个buildpart方法,该builder方法由CorlcreteBuilder实现,以构造实际产品(Product)。
更多图书资讯可访问读书人图书频道: http://www.reader8.com/book/