精通Swift設計模式 精通Swift设计模式
亞當·弗里曼 (Adam Freeman)
- 出版商: 人民郵電
- 出版日期: 2016-09-01
- 定價: $534
- 售價: 8.5 折 $454
- 語言: 簡體中文
- 頁數: 444
- 裝訂: 平裝
- ISBN: 7115433488
- ISBN-13: 9787115433480
-
相關分類:
Apple Developer、Design Pattern
- 此書翻譯自: Pro Design Patterns in Swift (Paperback)
-
相關翻譯:
Swift 設計模式 (Pro Design Patterns in Swift) (繁中版)
下單後立即進貨 (約4週~6週)
買這商品的人也買了...
-
$500$390
相關主題
商品描述
本書是系統學習Swift 設計模式和Cocoa 框架知識的絕佳參考圖書。
書中內容分為五部分:
首部分介紹學習本書的預備知識,包括使用Xcode 創建的Playgroud 文件和名為SportsStore 的iOS 應用
第二部分講解創建型模式,並輔以大量代碼示例和圖示
第三部分闡述結構型模式,並重點區分了容易混淆的模式
第四部分介紹行為型模式,總結了一些知名度較小的模式
第五部分討論MVC 模式,剖析了MVC 模式的重要性
作者簡介
Adam Freeman曾在多家名企擔任高級職務,現為暢銷技術圖書作家,著有多部C#、.NET和Java方面的大部頭作品。其中《ASP.NET 4高級程序設計(第4版)》《精通ASP.NET MVC 3框架(第3版)》《HTML5指南》銷量均在同品種中名列前茅,備受讀者推崇。
目錄大綱
第一部分準備工作
第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使用Xcode Playground7
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在View Controller中輸出修改日誌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