基本介紹
- 書名:深入淺出設計模式
- ISBN:9787302135647
- 定價:39元
- 出版時間:2006-12-22
- 裝幀:平裝
閱讀推薦,書籍目錄,
閱讀推薦
作者幫助你領悟設計模式的思想及精華,並將其融會貫通、靈活套用到自己的開發過程中。
全書用兩章篇幅對設計模式和GRASP作了基本介紹,3種設計模式的講解:對於每一種模式,先給出定義,接著通過類比方式用一個現實世界中的例子說明模式的套用,然後分別以C#和Java代碼例述模式的架構實現。最後一章給出了兩個設計模式綜合案例,為讀者實踐設計模式提供了很好的學習環境。附錄部分精心安排了自測題及答案,供讀者練習並檢驗學習效果。
本書適合程式開發人員閱讀,尤其適合作為大學計算機專業高年級學生和研究生的教學參考書。
書籍目錄
目錄
第1章基本概念 1
1.1什麼是設計模式 2
1.2設計模式的作用 3
1.3GRASP模式的分類 4
1.4GoF設計模式的分類 4
1.5模式的學習階段 6
第2章負責任地設計對象——GRASP 9
2.1InformationExpert(信息專家) 11
2.2Creator(創造者) 13
2.3LowCoupling(低耦合) 14
2.4HighCohesion(高內聚) 15
2.5Controller(控制器) 17
2.6Polymorphism(多態) 18
2.7PureFabrication(純虛構) 19
2.8Indirection(間接) 20
2.9ProtectedVariations(受保護變化) 21
第3章GoF-CreationalDesignPatterns創建型設計模式 23
3.1SimpleFactoryPattern(簡單工廠模式) 24
3.1.1定義 24
3.1.2現實例子——國旗生產廠 26
3.1.3C#實例1——電子付款系統 26
3.1.4C#實例2——學校登錄系統 29
3.1.5Java實例——手機簡單工廠 32
3.1.6優勢和缺陷 34
3.1.7套用情景 34
3.2FactoryMethodPattern(工廠方法模式) 35
3.2.1定義 35
3.2.2現實例子——兵工廠 36
3.2.3C#實例——多文檔系統 37
3.2.4Java實例——擴展了的手機工廠 41
3.2.5優勢和缺陷 44
3.2.6套用情景 44
3.3AbstractFactoryPattern(抽象工廠模式) 45
3.3.1定義 45
3.3.2現實例子——擴展了的兵工廠 48
3.3.3C#實例——大陸生態系統 49
3.3.4Java實例——電腦產品 52
3.3.5優勢和缺陷 57
3.3.6套用情景 57
3.4BuilderPattern(建造者模式) 58
3.4.1定義 58
3.4.2現實例子——快餐店 60
3.4.3C#實例——車間造車 61
3.4.4Java實例——建造房屋 65
3.4.5優勢和缺陷 69
3.4.6套用情景 70
3.5PrototypePattern(原型模式) 70
3.5.1定義 70
3.5.2現實中的拷貝-貼上 71
3.5.3C#實例——顏色管理器 72
3.5.4Java實例——簡單ToolBar 74
3.5.5ShallowCopy與DeepCopy 76
3.5.6優勢和缺陷 82
3.5.7套用情景 82
3.6SingletonPattern(單例模式) 82
3.6.1定義 82
3.6.2現?抵械牡ダ??猈indowsTaskManager 83
3.6.3C#實例——負載均衡控制器 84
3.6.4Java實例——系統日誌 86
3.6.5DoubleCheckLocking(雙檢鎖) 89
3.6.6優勢和缺陷 93
3.6.7套用情景 93
第4章GoF-StructuralDesignPatterns結構型設計模式 95
4.1AdapterPattern(適配器模式) 96
4.1.1定義 96
4.1.2現實中的實例——電腦電源適配器 97
4.1.3C#實例——化學數據銀行 98
4.1.4Java實例——清潔系統 102
4.1.5優勢和缺陷 104
4.1.6套用情景 104
4.2BridgePattern(橋接模式) 104
4.2.1定義 104
4.2.2現實中的實例——男人的約會 106
4.2.3C#實例——商業對象與數據對象 107
4.2.4Java實例——不同系統的圖像處理 112
4.2.5優勢和缺陷 114
4.2.6套用情景 115
4.3CompositePattern(組合模式) 115
4.3.1定義 115
4.3.2組合模式的現實套用——資源管理器 117
4.3.3C#實例——圖形樹狀對象結構 118
4.3.4Java實例——文檔格式化 121
4.3.5優勢和缺陷 124
4.3.6套用情景 125
4.4DecoratorPattern(裝飾模式) 125
4.4.1定義 125
4.4.2現實中的裝飾模式——相架 126
4.4.3C#實例——圖書館中的項目 127
4.4.4Java實例——自定義JButton 131
4.4.5優勢和缺陷 133
4.4.6套用情景 134
4.5FacadePattern(外觀模式) 134
4.5.1定義 134
4.5.2現實中的實例——顧客服務員 135
4.5.3C#實例——抵押申請審核 136
4.5.4Java實例——沖茶 139
4.5.5優勢和缺陷 143
4.5.6套用情景 143
4.6FlyweightPattern(輕量級模式) 144
4.6.1定義 144
4.6.2實例——中游的四國軍棋 146
4.6.3C#實例——文檔編輯器 147
4.6.4Java實例——裝載圖像 151
4.6.5優勢和缺陷 154
4.6.6套用情景 154
4.7ProxyPattern(代理模式) 154
4.7.1定義 154
4.7.2幾個現實中的實例 156
4.7.3C#實例——數學代理 158
4.7.4Java實例——Socket回聲 160
4.7.5優勢和缺陷 165
4.7.6套用情景 165
第5章GoF-BehavioralDesignPatterns行為型設計模式 167
5.1ChainofResponsibility(責任鏈模式) 168
5.1.1定義 168
5.1.2現實中的實例——軍情的傳遞 169
5.1.3C#實例——採購分級審批 170
5.1.4Java實例——智慧型大廈安全系統 174
5.1.5優勢和缺陷 178
5.1.6套用情景 178
5.2CommandPattern(命令模式) 179
5.2.1定義 179
5.2.2現實中的實例——餐館訂菜 180
5.2.3C#實例——簡單計算器 181
5.2.4Java實例——總開關 185
5.2.5優勢和缺陷 189
5.2.6套用情景 189
5.3InterpreterPattern(解釋器模式) 190
5.3.1定義 190
5.3.2現實示例——音樂符號 192
5.3.3C#實例——中國金錢大寫轉換 192
5.3.4Java實例——自定義程式解釋器 197
5.3.5優勢和缺陷 204
5.3.6套用情景 205
5.4IteratorPattern(疊代器模式) 205
5.4.1定義 205
5.4.2現實示例——電視節目選擇器 206
5.4.3C#實例——遍歷例子 207
5.4.4Java實例——兩個疊代器 211
5.4.5優勢和缺陷 213
5.4.6套用情景 214
5.5MediatorPattern(中介者模式) 214
5.5.1定義 214
5.5.2現實示例——機場控制塔 215
5.5.3C#實例——聊天室 216
5.5.4Java實例——多執行緒通信 220
5.5.5優勢和缺陷 223
5.5.6套用情景 223
5.6MementoPattern(備忘錄模式) 223
5.6.1定義 223
5.6.2現實示例——音響均衡器 226
5.6.3C#實例——銷售目標 226
5.6.4Java實例——多次Undo(取消)操作 231
5.6.5優勢和缺陷 236
5.6.6套用情景 236
5.7ObserverPattern(觀察者模式) 236
5.7.1定義 236
5.7.2現實例子——拉登現身了 238
5.7.3C#實例——貓和老鼠 238
5.7.4C#實例——股票變化 241
5.7.5Java實例——監控系統 245
5.7.6優勢和缺陷 248
5.7.7套用情景 248
5.8StatePattern(狀態模式) 248
5.8.1定義 248
5.8.2現實例子——心情好壞 250
5.8.3C#實例——賬戶分類 250
5.8.4Java實例——汽車的變速檔 258
5.8.5優勢和缺陷 261
5.8.6套用情景 261
5.9StrategyPattern(策略模式) 261
5.9.1定義 261
5.9.2現實例子——去機場的策略 263
5.9.3C#實例——排序方法 263
5.9.4Java實例——多格式輸出 266
5.9.5優勢和缺陷 272
5.9.6套用情景 272
5.10TemplateMethodPattern(模板方法模式) 272
5.10.1定義 272
5.10.2現實例子——廚師烹調 274
5.10.3C#實例——資料庫連線模板 274
5.10.4Java實例——冒泡排序模板 277
5.10.5優勢和缺陷 280
5.10.6套用情景 280
5.11VisitorPattern(訪問者模式) 280
5.11.1定義 280
5.11.2現實例子——收銀員收銀計費 282
5.11.3C#實例——人事評估 283
5.11.4Java實例——維修工程師檢查車輛 287
5.11.5優勢和缺陷 291
5.11.6套用情??291
第6章模式的綜合套用 293
6.1Java實例——擴展的日誌記錄器 294
6.2C#實例——存儲分析器 298
6.3用模式生成程式架構 316
附錄1自測題 321
附錄2自測題答案 331
參考文獻 337