內容簡介
《Objective-C編程之道:iOS設計模式解析》是基於iOS的軟體開發指南。書中套用GoF的經典設計模式,介紹了如何在代碼中套用創建型模式、結構型模式和行為模式,如何設計模式以鞏固應用程式,並通過設計模式實例介紹MVC在CocoaTouch框架中的工作方式。
目錄
第一部分 設計模式初體驗
第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 242
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