精通Swift设计模式 全新正版pdf下载

精通Swift设计模式 全新正版百度网盘pdf下载

作者:
简介:精通Swift设计模式 全新正版
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

  • 作者:[美]亚当·弗里曼(Adam Freeman)
  • 著:[美]亚当·弗里曼(Adam Freeman)
  • 装帧:简装
  • 印次:暂无
  • 定价:89.0
  • ISBN:9787115433480
  • 出版社:人民邮电出版社
  • 开本:其他
  • 印刷时间:暂无
  • 语种:中文
  • 出版时间:2016-09-01
  • 页数:444
  • 外部编号:1201383823
  • 版次:1

第一部分准备工作
第1章设计模式2
1.1将设计模式置于上下文中2
1.1.1设计模式简介3
1.1.2设计模式的结构3
1.1.3量化设计模式4
1.1.4问题出现之后使用设计模式4
1.1.5设计模式的局限5
1.2关于本书5
1.2.1读者需要哪些知识背景5
1.2.2读者需要哪些软件5
1.2.3本书的结构6
1.2.4获取示例代码6
1.3总结6
第2章熟悉Xcode的使用7
2.1使用XcodePlayground7
2.1.1创建Playground7
2.1.2查看变量取值的历史记录9
2.1.3使用取值时间轴11
2.1.4在Playground中使用UI组件13
2.2使用OSX命令行工具项目14
2.2.1创建命令行工具项目14
2.2.2Xcode的布局15
2.2.3新建一个Swift文件16
2.3总结19
第3章开发SportsStore应用20
3.1创建一个简单的iOS应用项目20
3.1.1新建项目21
3.1.2熟悉Xcode的布局22
3.1.3定义数据23
3.2构建简单的布局25
3.2.1添加基本组件26
3.2.2配置AutoLayout28
3.2.3测试布局效果29
3.3实现与显示库存总量的Label相关的
代码30
3.3.1创建引用30
3.3.2更新界面显示31
3.4实现tablecell32
3.4.1配置自定义tablecell和布局32
3.4.2配置tablecell的布局约束34
3.4.3创建tablecell类和Outlet34
3.4.4实现数据源协议36
3.4.5注册数据源37
3.4.6测试数据源38
3.5处理编辑操作38
3.6测试SportsStore应用41
3.7总结42
第二部分创建型模式
第4章对象模板模式44
4.1准备示例项目44
4.2此模式旨在解决的问题45
4.3对象模板模式47
4.4实现对象模板模式48
4.5对象模板模式的优点49
4.5.1解耦的好处49
4.5.2封装的优点50
4.5.3不断演化外部呈现的好处52
4.6对象模板模式的陷阱54
4.7Cocoa中使用对象模板模式的示例54
4.8在SportsStore应用中使用对象模板
模式54
4.8.1准备示例应用54
4.8.2创建Product类56
4.8.3使用Product类58
4.8.4扩展应用的总结信息60
4.9总结61
第5章原型模式62
5.1此模式旨在解决的问题62
5.1.1初始化过程开销大62
5.1.2对模板的依赖64
5.2原型模式65
5.3实现原型模式65
5.3.1克隆引用类型67
5.3.2浅复制与深复制70
5.3.3复制数组73
5.4原型模式的优点75
5.4.1避免内存开销大的初始化操作75
5.4.2分离对象的创建与使用77
5.5原型模式的陷阱83
5.5.1陷阱一:深复制与浅复制83
5.5.2陷阱二:扭曲代码结构83
5.5.3陷阱三:不标准的协议83
5.6Cocoa中使用原型模式的实例83
5.6.1使用Cocoa数组84
5.6.2使用NSCopying属性修饰符86
5.7在SportsStore应用中使用原型模式87
5.7.1准备示例应用87
5.7.2在Product类中实现NSCopying
协议87
5.7.3创建Logger类88
5.7.4在ViewController中输出修改
日志89
5.7.5测试修改91
5.8总结91
第6章单例模式92
6.1准备示例项目92
6.2此模式旨在解决的问题92
6.3单例模式96
6.4实现单例模式96
6.4.1快速实现单例模式96
6.4.2创建一个传统的单例实现98
6.4.3处理并发100
6.5单例模式的陷阱104
6.5.1泄露缺陷104
6.5.2代码文件共享带来的问题105
6.5.3并发陷阱105
6.6Cocoa中使用单例模式的实例106
6.7在SportsStore应用中使用单例模式106
6.7.1保护数据数组107
6.7.2保护回调108
6.7.3定义单例109
6.8总结111
第7章对象池模式112
7.1准备示例项目112
7.2此模式旨在解决的问题113
7.3对象池模式113
7.4实现对象池模式114
7.4.1定义Pool类114
7.4.2使用Pool类118
7.5对象池模式的陷阱121
7.6Cocoa中使用对象池模式的实例121
7.7在SportsStore应用中使用对象池
模式122
7.7.1准备示例应用122
7.7.2创建一个(伪)服务器122
7.7.3创建对象池123
7.7.4应用对象池模式124
7.8总结127
第8章对象池模式的变体128
8.1准备示例项目128
8.2对象池模式的变体128
8.2.1对象创建策略129
8.2.2对象复用策略132
8.2.3空池策略136
8.2.4对象分配策略146
8.3对象池模式变体的陷阱148
8.3.1期望与现实之间的差距149
8.3.2过度利用与低利用率149
8.4Cocoa中使用对象池模式变体的示例149
8.5在SportsStore应用中使用对象池模式
变体149
8.6总结151
第9章工厂方法模式152
9.1准备示例项目152
9.2此模式旨在解决的问题154
9.3工厂方法模式156
9.4实现工厂方法模式156
9.4.1定义全局工厂方法157
9.4.2使用基类158
9.5工厂方法模式的变体162
9.6工厂方法模式的陷阱164
9.7Cocoa中使用工厂方法模式的示例164
9.8在SportsStore应用中使用工厂方法
模式164
9.8.1准备示例应用164
9.8.2实现工厂方法模式166
9.8.3应用工厂方法模式167
9.9总结168
第10章抽象工厂模式169
10.1准备示例项目169
10.2此模式旨在解决的问题172
10.3抽象工厂模式172
10.4实现抽象工厂模式174
10.4.1创建抽象工厂类174
10.4.2创建具体工厂类174
10.4.3完善抽象工厂类175
10.4.4使用抽象工厂模式176
10.5抽象工厂模式的变体177
10.5.1隐藏抽象工厂类177
10.5.2在具体工厂类中使用单例
模式178
10.5.3在实现类中使用原型模式180
10.6抽象工厂模式的陷阱185
10.7Cocoa中使用抽象工厂模式的示例185
10.8在SportsStore应用中使用抽象工厂
模式186
10.8.1准备示例应用186
10.8.2定义实现类和协议186
10.8.3定义抽象与具体工厂类187
10.8.4使用工厂与实现类188
10.9总结189
第11章建造者模式190
11.1准备示例项目190
11.2建造者模式194
11.3实现建造者模式195
11.3.1定义建造者类195
11.3.2使用建造者类196
11.3.3此模式的影响196
11.4建造者模式的变体200
11.5建造者模式的陷阱202
11.6Cocoa中使用建造者模式的实例202
11.7在SportsStore应用中使用建造者
模式203
11.7.1准备示例应用203
11.7.2定义建造者类203
11.7.3使用建造者类204
11.8总结205
第三部分结构型模式
第12章适配器模式208
12.1准备示例项目208
12.1.1创建数据源209
12.1.2实现示例应用210
12.2此模式旨在解决的问题211
12.3适配器模式212
12.4实现适配器模式213
12.5适配器模式之变体215
12.5.1定义一个适配器包装类215
12.5.2创建一个双向适配器216
12.6适配器模式的缺陷219
12.7Cocoa中使用适配器模式的实例219
12.8在SportsStore应用中使用适配器
模式219
12.8.1准备示例应用220
12.8.2定义Adapter类220
12.8.3使用适配功能221
12.9总结222
第13章桥接模式223
13.1准备示例项目223
13.2此模式旨在解决的问题225
13.3桥接模式226
13.4实现桥接模式228
13.4.1实现信息部分228
13.4.2实现通道部分229
13.4.3创建桥接类229
13.4.4增加信息类型与通道类型230
13.5桥接模式的变体233
13.6桥接模式的陷阱237
13.7Cocoa中使用桥接模式的实例237
13.8在SportsStore应用中使用此模式237
13.8.1准备示例应用237
13.8.2理解待解决的问题237
13.8.3定义桥接类238
13.9总结239
第14章装饰器模式240
14.1准备示例项目240
14.2此模式旨在解决的问题242
14.3装饰器模式244
14.4实现装饰器模式244
14.5装饰器模式的变体246
14.5.1创建具有新功能的装饰器246
14.5.2合并多个装饰器249
14.6装饰器模式的陷阱251
14.7Cocoa中使用装饰器模式的实例251
14.8在示例项目中使用装饰器模式251
14.8.1准备示例应用252
14.8.2创建装饰器252
14.8.3使用装饰器253
14.9总结253
第15章组合模式254
15.1准备示例项目254
15.2此模式旨在解决的问题256
15.3组合模式257
15.4实现组合模式257
15.5组合模式的陷阱260
15.6Cocoa中使用组合模式的实例261
15.7在SportsStore应用中使用此模式261
15.7.1准备示例应用261
15.7.2定义组合类262
15.7.3使用此模式263
15.8总结264
第16章外观模式265
16.1准备示例项目265
16.2此模式旨在解决的问题267
16.3外观模式268
16.4实现外观模式269
16.5外观模式之变体270
16.6外观模式的陷阱271
16.7Cocoa中使用外观模式的实例272
16.8在SportsStore应用中使用外观模式273
16.8.1准备示例应用273
16.8.2创建外观类274
16.8.3使用外观类274
16.9总结275
第17章享元模式276
17.1准备示例项目276
17.2此模式旨在解决的问题278
17.3享元模式278
17.4实现享元模式279
17.4.1创建Flyweight协议279
17.4.2创建FlyweightImplementation
类280
17.4.3增加并发保护281
17.4.4创建FlyweightFactory类282
17.4.5应用享元模式284
17.5享元模式之变体285
17.6享元模式的陷阱286
17.6.1陷阱一:重复的外部数据286
17.6.2陷阱二:可变的外部数据287
17.6.3陷阱三:并发访问287
17.6.4陷阱四:过度优化287
17.6.5陷阱五:误用287
17.7Cocoa中使用享元模式的实例287
17.8在SportsStore应用中使用享元模式288
17.8.1准备示例应用289
17.8.2创建Flyweight协议和
实现类289
17.8.3创建享元工厂289
17.8.4应用享元模式290
17.9总结290
第18章代理模式291
18.1准备示例项目291
18.2此模式旨在解决的问题292
18.2.1远程对象问题292
18.2.2开销大的问题292
18.2.3访问控制问题293
18.3代理模式293
18.3.1解决远程对象问题293
18.3.2解决操作开销大的问题294
18.3.3解决访问限制问题294
18.4实现代理模式295
18.4.1实现远程对象代理295
18.4.2实现开销大的操作的代理297
18.4.3实现访问限制代理299
18.5代理模式之变体302
18.6代理模式的陷阱305
18.7Cocoa中使用代理模式的实例306
18.8在SportsStore应用中使用代理模式306
18.8.1准备示例应用306
18.8.2定义协议、工厂方法和
代理类306
18.8.3更新ProductDataStore类307
18.8.4发送库存更新308
18.9总结310
第四部分行为型模式
第19章责任链模式312
19.1准备示例项目312
19.2此模式旨在解决的问题314
19.3责任链模式315
19.4实现责任链模式315
19.4.1创建并使用责任链317
19.4.2使用责任链模式318
19.5责任链模式之变体318
19.5.1使用工厂方法模式318
19.5.2责任链响应反馈319
19.5.3通知责任链中的其他链321
19.6此模式的陷阱323
19.7Cocoa中使用责任链模式的实例323
19.8在SportsStore应用中使用责任链
模式323
19.8.1准备示例应用323
19.8.2定义责任链及其链323
19.9总结325
第20章命令模式326
20.1准备示例项目326
20.2此模式旨在解决的问题327
20.3命令模式328
20.4实现命令模式328
20.4.1定义Command协议329
20.4.2定义Command实现类329
20.4.3使用命令模式330
20.4.4添加并发保护332
20.4.5使用撤销操作的功能333
20.5命令模式之变体333
20.5.1创建复合命令334
20.5.2将命令当作宏来用335
20.5.3将闭包作为命令337
20.6命令模式的陷阱339
20.7Cocoa中使用命令模式的实例339
20.8在SportsStore应用中使用命令模式340
20.8.1准备示例项目340
20.8.2实现撤销功能340
20.9总结343
第21章中介者模式344
21.1准备示例项目344
21.2此模式旨在解决的问题346
21.3中介者模式348
21.4实现中介者模式348
21.4.1定义Meditator类349
21.4.2遵循Peer协议349
21.4.3实现并发保护351
21.5中介者模式之变体353
21.5.1将更多的逻辑置于中介者中353
21.5.2通用化中介者与其管理的对象
之间的关系355
21.6中介者模式的陷阱360
21.7Cocoa中使用中介者模式的实例361
21.8在SportsStore应用中使用中介者
模式363
21.9总结363
第22章观察者模式364
22.1准备示例项目364
22.2此模式旨在解决的问题366
22.3观察者模式366
22.4实现观察者模式367
22.4.1创建SubjectBase类368
22.4.2遵循Subject协议369
22.4.3遵循Observer协议369
22.4.4使用观察者模式370
22.5观察者模式之变体371
22.5.1通知的通用化371
22.5.2使用弱引用375
22.5.3处理生命周期较短的
主题对象376
22.6观察者模式的陷阱379
22.7Cocoa中使用观察者模式的实例379
22.7.1用户界面事件379
22.7.2观察属性变化380
22.8在SportsStore应用中使用此模式381
22.8.1准备示例应用381
22.8.2应用观察者模式381
22.9总结383
第23章备忘录模式384
23.1准备示例项目384
23.2此模式旨在解决的问题386
23.3备忘录模式387
23.4实现备忘录模式388
23.4.1实现Memento类390
23.5备忘录模式之变体390
23.6备忘录模式的陷阱392
23.7Cocoa中使用备忘录模式的实例393
23.8在SportsStore中使用备忘录模式396
23.8.1准备示例项目396
23.8.2实现备忘录模式396
23.9总结398
第24章策略模式399
24.1准备示例项目399
24.2此模式旨在解决的问题400
24.3策略模式401
24.4实现策略模式402
24.4.1定义策略和环境类402
24.4.2使用策略模式403
24.5策略模式之变体404
24.6策略模式的陷阱405
24.7Cocoa中使用策略模式的实例405
24.7.1Cocoa框架中基于协议的
策略405
24.7.2Cocoa中基于选择器的策略406
24.8在SportsStore应用中使用策略模式407
24.9总结407
第25章访问者模式408
25.1准备示例项目408
25.2此模式旨在解决的问题410
25.3访问者模式412
25.4实现访问者模式412
25.4.1遵循Shape协议414
25.4.2创建访问者416
25.4.3使用访问者416
25.5访问者模式之变体417
25.6访问模式的陷阱417
25.7Cocoa中使用访问者模式的实例417
25.8在SportsStore应用中使用访问者
模式417
25.9总结417
第26章模板方法模式418
26.1准备示例项目418
26.2此模式旨在解决的问题420
26.3模板方法模式420
26.4实现模板方法模式420
26.5模板方法模式之变体422
26.6模板方法模式的陷阱424
26.7Cocoa中使用模板方法模式的实例424
26.8在SportsStore应用中使用模板方法
模式424
26.9总结424
第五部分MVC模式
第27章MVC模式426
27.1准备示例项目426
27.2此模式旨在解决的问题426
27.3MVC模式426
27.4实现MVC模式430
27.4.1实现通用的代码431
27.4.2定义一个框架432
27.4.3创建模型433
27.4.4实现视图435
27.4.5定义控制器436
27.4.6完善框架439
27.4.7运行应用439
27.4.8扩展应用440
27.5MVC模式之变体444
27.6MVC模式的陷阱444
27.7Cocoa中使用MVC模式的实例444
27.8总结444

Adam Freeman曾在多家名企担任不错职务,现为**技术图书作家,著有多部C#、.NET和Java方面的大部头作品。其中《ASP.NET4不错程序设计(第4版)》《精通ASP.NETMVC3框架(第3版)》《HTML5指南》销量均在同品种中名列前茅,备受读者推崇。

本书是系统学习Swift设计模式和Cocoa框架知识的不错参考图书。书中内容分为五部分:首部分介绍学习本书的预备知识,包括使用Xcode创建的Playgroud文件和名为SportsStore的iOS应用;第二部分讲解创建型模式,并辅以大量代码示例和图示;第三部分阐述结构型模式,并重点区分了容易混淆的模式;第四部分介绍行为型模式,总结了一些知名度较小的模式;第五部分讨论MVC模式,剖析了MVC模式的重要性。