精通Swift设计模式pdf

图书网 2018年9月6日09:11:0422.6K

Swift编程语言已然改变了iOS的世界,为Cocoa开发开启了新的篇章。

本书是帮助读者掌握Swift强大功能的又一利器,由技术畅销书作者Adam Freeman执笔,从设计模型应用的角度探讨Swift语言,抽丝剥茧,层层深入,囊括各类经典模式,并挖掘了那些看似十分简单、实际别有一番奥妙的知识。在本书的指导下,你可以玩转设计模式,用Swift语言开发出优质的iOS应用。

设计模式应用的价值和时机。

经典设计模式解析,包括单例模式、抽象工厂模式、责任链模式和观察者模式。

有待挖掘的潜力型设计模式,包括备忘录模式、命令模式和中介者模式。

如何利用Swift语言精髓让代码易于理解、易于测试、易于维护,并且拥有良好的架构。

如何利用Cocoa API实现经典设计模式。

Swift应用的难点和易错点。

精通Swift设计模式 内容简介

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

精通Swift设计模式 目录

第一部分 准备工作

第1章 设计模式

1.1 将设计模式置于上下文中

1.1.1 设计模式简介

1.1.2 设计模式的结构

1.1.3 量化设计模式

1.1.4 问题出现之后使用设计模式

1.1.5 设计模式的局限

1.2 关于本书

1.2.1 读者需要哪些知识背景

1.2.2 读者需要哪些软件

1.2.3 本书的结构

1.2.4 获取示例代码

1.3 总结

第2章 熟悉Xcode的使用

2.1 使用Xcode Playground

2.1.1 创建Playground

2.1.2 查看变量取值的历史记录

2.1.3 使用取值时间轴

2.1.4 在Playground中使用UI组件

2.2 使用OSX命令行工具项目

2.2.1 创建命令行工具项目

2.2.2 Xcode的布局

2.2.3 新建一个Swift文件

2.3 总结

第3章 开发SportsStore应用

3.1 创建一个简单的iOS应用项目

3.1.1 新建项目

3.1.2 熟悉Xcode的布局

3.1.3 定义数据

3.2 构建简单的布局

3.2.1 添加基本组件

3.2.2 配置Auto Layout

3.2.3 测试布局效果

3.3 实现与显示库存总量的Label相关的代码

3.3.1 创建引用

3.3.2 更新界面显示

3.4 实现table cell

3.4.1 配置自定义table cell和布局

3.4.2 配置table cell的布局约束

3.4.3 创建table cell类和Outlet

3.4.4 实现数据源协议

3.4.5 注册数据源

3.4.6 测试数据源

3.5 处理编辑操作

3.6 测试SportsStore应用

3.7 总结

第二部分 创建型模式

第4章 对象模板模式

4.1 准备示例项目

4.2 此模式旨在解决的问题

4.3 对象模板模式

4.4 实现对象模板模式

4.5 对象模板模式的优点

4.5.1 解耦的好处

4.5.2 封装的优点

4.5.3 不断演化外部呈现的好处

4.6 对象模板模式的陷阱

4.7 Cocoa中使用对象模板模式的示例

4.8 在SportsStore应用中使用对象模板模式

4.8.1 准备示例应用

4.8.2 创建Product类

4.8.3 使用Product类

4.8.4 扩展应用的总结信息

4.9 总结

第5章 原型模式

5.1 此模式旨在解决的问题

5.1.1 初始化过程开销大

5.1.2 对模板的依赖

5.2 原型模式

5.3 实现原型模式

5.3.1 克隆引用类型

5.3.2 浅复制与深复制

5.3.3 复制数组

5.4 原型模式的优点

5.4.1 避免内存开销大的初始化操作

5.4.2 分离对象的创建与使用

5.5 原型模式的陷阱

5.5.1 陷阱一:深复制与浅复制

5.5.2 陷阱二:扭曲代码结构

5.5.3 陷阱三:不标准的协议

5.6 Cocoa中使用原型模式的实例

5.6.1 使用Cocoa数组

5.6.2 使用NSCopying属性修饰符

5.7 在SportsStore应用中使用原型模式

5.7.1 准备示例应用

5.7.2 在Product类中实现NSCopying协议

5.7.3 创建Logger类

5.7.4 在View Controller中输出修改日志

5.7.5 测试修改

5.8 总结

第6章 单例模式

6.1 准备示例项目

6.2 此模式旨在解决的问题

6.3 单例模式

6.4 实现单例模式

6.4.1 快速实现单例模式

6.4.2 创建一个传统的单例实现

6.4.3 处理并发

6.5 单例模式的陷阱

6.5.1 泄露缺陷

6.5.2 代码文件共享带来的问题

6.5.3 并发陷阱

6.6 Cocoa中使用单例模式的实例

6.7 在SportsStore应用中使用单例模式

6.7.1 保护数据数组

6.7.2 保护回调

6.7.3 定义单例

6.8 总结

第7章 对象池模式

7.1 准备示例项目

7.2 此模式旨在解决的问题

7.3 对象池模式

7.4 实现对象池模式

7.4.1 定义Pool类

7.4.2 使用Pool类

7.5 对象池模式的陷阱

7.6 Cocoa中使用对象池模式的实例

7.7 在SportsStore应用中使用对象池模式

7.7.1 准备示例应用

7.7.2 创建一个(伪)服务器

7.7.3 创建对象池

7.7.4 应用对象池模式

7.8 总结

第8章 对象池模式的变体

8.1 准备示例项目

8.2 对象池模式的变体

8.2.1 对象创建策略

8.2.2 对象复用策略

8.2.3 空池策略

8.2.4 对象分配策略

8.3 对象池模式变体的陷阱

8.3.1 期望与现实之间的差距

8.3.2 过度利用与低利用率

8.4 Cocoa中使用对象池模式变体的示例

8.5 在SportsStore应用中使用对象池模式变体

8.6 总结

第9章 工厂方法模式

9.1 准备示例项目

9.2 此模式旨在解决的问题

9.3 工厂方法模式

9.4 实现工厂方法模式

9.4.1 定义全局工厂方法

9.4.2 使用基类

9.5 工厂方法模式的变体

9.6 工厂方法模式的陷阱

9.7 Cocoa中使用工厂方法模式的示例

9.8 在SportsStore应用中使用工厂方法模式

9.8.1 准备示例应用

9.8.2 实现工厂方法模式

9.8.3 应用工厂方法模式

9.9 总结

第10章 抽象工厂模式

10.1 准备示例项目

10.2 此模式旨在解决的问题

10.3 抽象工厂模式

10.4 实现抽象工厂模式

10.4.1 创建抽象工厂类

10.4.2 创建具体工厂类

10.4.3 完善抽象工厂类

10.4.4 使用抽象工厂模式

10.5 抽象工厂模式的变体

10.5.1 隐藏抽象工厂类

10.5.2 在具体工厂类中使用单例模式

10.5.3 在实现类中使用原型模式

10.6 抽象工厂模式的陷阱

10.7 Cocoa中使用抽象工厂模式的示例

10.8 在SportsStore应用中使用抽象工厂模式

10.8.1 准备示例应用

10.8.2 定义实现类和协议

10.8.3 定义抽象与具体工厂类

10.8.4 使用工厂与实现类

10.9 总结

第11章 建造者模式

11.1 准备示例项目

11.2 建造者模式

11.3 实现建造者模式

11.3.1 定义建造者类

11.3.2 使用建造者类

11.3.3 此模式的影响

11.4 建造者模式的变体

11.5 建造者模式的陷阱

11.6 Cocoa中使用建造者模式的实例

11.7 在SportsStore应用中使用建造者模式

11.7.1 准备示例应用

11.7.2 定义建造者类

11.7.3 使用建造者类

11.8 总结

第三部分 结构型模式

第12章 适配器模式

12.1 准备示例项目

12.1.1 创建数据源

12.1.2 实现示例应用

12.2 此模式旨在解决的问题

12.3 适配器模式

12.4 实现适配器模式

12.5 适配器模式之变体

12.5.1 定义一个适配器包装类

12.5.2 创建一个双向适配器

12.6 适配器模式的缺陷

12.7 Cocoa中使用适配器模式的实例

12.8 在SportsStore应用中使用适配器模式

12.8.1 准备示例应用

12.8.2 定义Adapter类

12.8.3 使用适配功能

12.9 总结

第13章 桥接模式

13.1 准备示例项目

13.2 此模式旨在解决的问题

13.3 桥接模式

13.4 实现桥接模式

13.4.1 实现信息部分

13.4.2 实现通道部分

13.4.3 创建桥接类

13.4.4 增加信息类型与通道类型

13.5 桥接模式的变体

13.6 桥接模式的陷阱

13.7 Cocoa中使用桥接模式的实例

13.8 在SportsStore应用中使用此模式

13.8.1 准备示例应用

13.8.2 理解待解决的问题

13.8.3 定义桥接类

13.9 总结

第14章 装饰器模式

14.1 准备示例项目

14.2 此模式旨在解决的问题

14.3 装饰器模式

14.4 实现装饰器模式

14.5 装饰器模式的变体

14.5.1 创建具有新功能的装饰器

14.5.2 合并多个装饰器

14.6 装饰器模式的陷阱

14.7 Cocoa中使用装饰器模式的实例

14.8 在示例项目中使用装饰器模式

14.8.1 准备示例应用

14.8.2 创建装饰器

14.8.3 使用装饰器

14.9 总结

第15章 组合模式

15.1 准备示例项目

15.2 此模式旨在解决的问题

15.3 组合模式

15.4 实现组合模式

15.5 组合模式的陷阱

15.6 Cocoa中使用组合模式的实例

15.7 在SportsStore应用中使用此模式

15.7.1 准备示例应用

15.7.2 定义组合类

15.7.3 使用此模式

15.8 总结

第16章 外观模式

16.1 准备示例项目

16.2 此模式旨在解决的问题

16.3 外观模式

16.4 实现外观模式

16.5 外观模式之变体

16.6 外观模式的陷阱

16.7 Cocoa中使用外观模式的实例

16.8 在SportsStore应用中使用外观模式

16.8.1 准备示例应用

16.8.2 创建外观类

16.8.3 使用外观类

16.9 总结

第17章 享元模式

17.1 准备示例项目

17.2 此模式旨在解决的问题

17.3 享元模式

17.4 实现享元模式

17.4.1 创建Flyweight协议

17.4.2 创建FlyweightImplementation类

17.4.3 增加并发保护

17.4.4 创建FlyweightFactory类

17.4.5 应用享元模式

17.5 享元模式之变体

17.6 享元模式的陷阱

17.6.1 陷阱一:重复的外部数据

17.6.2 陷阱二:可变的外部数据

17.6.3 陷阱三:并发访问

17.6.4 陷阱四:过度优化

17.6.5 陷阱五:误用

17.7 Cocoa中使用享元模式的实例

17.8 在SportsStore应用中使用享元模式

17.8.1 准备示例应用

17.8.2 创建Flyweight协议和实现类

17.8.3 创建享元工厂

17.8.4 应用享元模式

17.9 总结

第18章 代理模式

18.1 准备示例项目

18.2 此模式旨在解决的问题

18.2.1 远程对象问题

18.2.2 开销大的问题

18.2.3 访问控制问题

18.3 代理模式

18.3.1 解决远程对象问题

18.3.2 解决操作开销大的问题

18.3.3 解决访问限制问题

18.4 实现代理模式

18.4.1 实现远程对象代理

18.4.2 实现开销大的操作的代理

18.4.3 实现访问限制代理

18.5 代理模式之变体

18.6 代理模式的陷阱

18.7 Cocoa中使用代理模式的实例

18.8 在SportsStore应用中使用代理模式

18.8.1 准备示例应用

18.8.2 定义协议、工厂方法和代理类

18.8.3 更新ProductDataStore类

18.8.4 发送库存更新

18.9 总结

第四部分 行为型模式

第19章 责任链模式

19.1 准备示例项目

19.2 此模式旨在解决的问题

19.3 责任链模式

19.4 实现责任链模式

19.4.1 创建并使用责任链

19.4.2 使用责任链模式

19.5 责任链模式之变体

19.5.1 使用工厂方法模式

19.5.2 责任链响应反馈

19.5.3 通知责任链中的其他链

19.6 此模式的陷阱

19.7 Cocoa中使用责任链模式的实例

19.8 在SportsStore应用中使用责任链模式

19.8.1 准备示例应用

19.8.2 定义责任链及其链

19.9 总结

第20章 命令模式

20.1 准备示例项目

20.2 此模式旨在解决的问题

20.3 命令模式

20.4 实现命令模式

20.4.1 定义Command协议

20.4.2 定义Command实现类

20.4.3 使用命令模式

20.4.4 添加并发保护

20.4.5 使用撤销操作的功能

20.5 命令模式之变体

20.5.1 创建复合命令

20.5.2 将命令当作宏来用

20.5.3 将闭包作为命令

20.6 命令模式的陷阱

20.7 Cocoa中使用命令模式的实例

20.8 在SportsStore应用中使用命令模式

20.8.1 准备示例项目

20.8.2 实观撤销功能

20.9 总结

第21章 中介者模式

21.1 准备示例项目

21.2 此模式旨在解决的问题

21.3 中介者模式

21.4 实现中介者模式

21.4.1 定义Meditator类

21.4.2 遵循Peer协议

21.4.3 实现并发保护

21.5 中介者模式之变体

21.5.1 将更多的逻辑置于中介者中

21.5.2 通用化中介者与其管理的对象之间的关系

21.6 中介者模式的陷阱

21.7 Cocoa中使用中介者模式的实例

21.8 在SportsStore应用中使用中介者模式

21.9 总结

第22章 观察者模式

22.1 准备示例项目

22.2 此模式旨在解决的问题

22.3 观察者模式

22.4 实现观察者模式

22.4.1 创建SubjectBase类

22.4.2 遵循Subject协议

22.4.3 遵循0bserver协议

22.4.4 使用观察者模式

22.5 观察者模式之变体

22.5.1 通知的通用化

22.5.2 使用弱引用

22.5.3 处理生命周期较短的主题对象

22.6 观察者模式的陷阱

22.7 Cocoa中使用观察者模式的实例

22.7.1 用户界面事件

22.7.2 观察属性变化

22.8 在SportsStore应用中使用此模式

22.8.1 准备示例应用

22.8.2 应用观察者模式

22.9 总结

第23章 备忘录模式

23.1 准备示例项目

23.2 此模式旨在解决的问题

23.3 备忘录模式

23.4 实现备忘录模式

23.4.1 实现Memento类

23.4.2 使用备忘录对象

23.5 备忘录模式之变体

23.6 备忘录模式的陷阱

23.7 Cocoa中使用备忘录模式的实例

23.8 在SportsStore中使用备忘录模式

23.8.1 准备示例项目

23.8.2 实现备忘录模式

23.9 总结

第24章 策略模式

24.1 准备示例项目

24.2 此模式旨在解决的问题

24.3 策略模式

24.4 实现策略模式

24.4.1 定义策略和环境类

24.4.2 使用策略模式

24.5 策略模式之变体

24.6 策略模式的陷阱

24.7 Cocoa中使用策略模式的实例

24.7.1 Cocoa框架中基于协议的策略

24.7.2 Cocoa中基于选择器的策略

24.8 在SportsStore应用中使用策略模式

24.9 总结

第25章 访问者模式

25.1 准备示例项目

25.2 此模式旨在解决的问题

25.3 访问者模式

25.4 实现访问者模式

25.4.1 遵循Shape协议

25.4.2 创建访问者

25.4.3 使用访问者

25.5 访问者模式之变体

25.6 访问模式的陷阱

25.7 Cocoa中使用访问者模式的实例

25.8 在SportsStore应用中使用访问者模式

25.9 总结

第26章 模板方法模式

26.1 准备示例项目

26.2 此模式旨在解决的问题

26.3 模板方法模式

26.4 实现模板方法模式

26.5 模板方法模式之变体

26.6 模板方法模式的陷阱

26.7 Cocoa中使用模板方法模式的实例

26.8 在SportsStore应用中使用模板方法模式

26.9 总结

第五部分 MVC模式

第27章 MVC模式

27.1 准备示例项目

27.2 此模式旨在解决的问题

27.3 MVC模式

27.4 实现MVC模式

27.4.1 实现通用的代码

27.4.2 定义一个框架

27.4.3 创建模型

27.4.4 实现视图

27.4.5 定义控制器

27.4.6 完善框架

27.4.7 运行应用

27.4.8 扩展应用

27.5 MVC模式之变体

27.6 MVC模式的陷阱

27.7 Cocoa中使用MVC模式的实例

27.8 总结

精通Swift设计模式 精彩文摘

第2章 熟悉Xcode的使用

本章将使用Xcode演示示例代码的呈现方式。Playground是Xcode 6最实用的功能之一,这个功能让我们可以在不创建应用工程的情况下编写和运行实验性的代码。我将使用Playground辅助说明设计模式试图解决的问题,并用它演示一些简单的实现。

本书的许多设计模式依赖于对类、方法和属性的访问权限限制。虽然Swift支持使用访问控制关键字来实现此目的,但是这种机制是以文件为基础的。这对Playground来说就有问题了,因为Playground中所有的代码都在一个单独的文件里面,无法保证访问权限得到控制。此外,本书讲解的设计模式还有不少要求支持并发访问,而Playground根本无法处理这类需求。

基于这些原因,我也会使用较为简单且支持多个文件的OS X命令行工具项目进行演示。命令行工具项目没有窗口化用户界面,而且只能通过控制台读取和输出内容。使用这种简单项目的好处是可以避免创建用户界面带来的麻烦,从而让我能够专注于讲解设计模式及其实现代码。

当然,很少有真实的项目是如此简单的。因此,在第3章,我会创建一款名为SportsStore的iOS应用,一款有图形用户界面的应用。在本书的后续内容中,我将频繁使用这一应用,为演示设计模式的应用提供合适的场景。

图书网:精通Swift设计模式pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  2   博主  0
    • 黄卓宏
      黄卓宏 9

      加油

      • 黄州红
        黄州红 0

        回复看看,回复看看,回复看看,