圖書簡介
本書是面向有一定Java語言基礎和一定編程經驗的讀者,重點介紹了面向對象的核心內容以及作者在面向對象研究中的一些新思想,全面探討在Java程式設計中怎樣使用一些重要的設計模式。作者編寫本書的目的是讓讀者不僅學習怎樣在軟體設計中使用好設計模式,更重要的是讓讀者通過學習使用設計模式深刻地理解面向對象的設計思想,以便更好地使用面向對象語言解決設計中的諸多問題。
圖書目錄
第1章 面向對象入門 1
1.1 程式語言的幾個發展階段 1
1.1.1 面向機器語言 1
1.1.2 面向過程語言 1
1.1.3 面向對象語言 2
1.1.4 使用Java的必要性 3
1.2 從抽象到類 3
1.3 類與程式的基本結構 5
1.4 使用的開發工具 6
第2章 封裝 7
2.1 從類的角度看封裝性 7
2.1.1 封裝數據及操作 7
2.1.2 類的UML圖 8
2.2 從對象的角度看封裝性 9
2.2.1 創建對象所體現的封裝性 9
2.2.2 對象訪問變數和調用方法所體現的封裝性 11
2.2.3 實例變數和類變數體現的封裝性 12
2.2.4 關於實例方法和類方法 13
2.3 從使用者角度看封裝性 14
2.4 有理數的類封裝 15
2.4.1 Rational類 15
2.4.2 用Rational對象做運算 18
2.5 從訪問許可權看封裝性 19
2.5.1 訪問限制修飾符 19
2.5.2 加強封裝性 21
2.6 包與類的封裝 22
2.6.1 包封裝 22
2.6.2 引入類庫中的類 24
2.6.3 引入自定義包中的類 24
第3章 繼承、接口與多態 26
3.1 子類與父類 26
3.2 子類的繼承性 27
3.3 關於protected的進一步說明 27
3.4 子類對象的特點 28
3.5 隱藏繼承的成員 29
3.6 通過重寫實現多態 30
3.7 上轉型對象體現多態 31
3.8 通過final禁止多態 33
3.9 通過super解決多態帶來的問題 33
3.10 接口 34
3.11 接口回調體現的多態 36
3.12 重載體現的多態 38
第4章 組合 41
4.1 引用的重要作用 41
4.2 對象的組合 44
4.3 組合關係和依賴關係 46
4.4 組合關係是弱耦合關係 47
4.5 基於組合的流水線 48
4.6 汽車動態更換駕駛員 50
第5章 面向對象的幾個基本原則 53
5.1 抽象類與接口 53
5.1.1 抽象類 53
5.1.2 接口 54
5.2 面向抽象原則 55
5.3 “開-閉”原則 57
5.3.1 什麼是“開-閉”原則 57
5.3.2 標準、標準構件和面向標準的產品 58
5.4 “多用組合,少用繼承”原則 61
5.4.1 繼承與復用 61
5.4.2 組合與復用 62
5.4.3 多用組合,少用繼承 62
5.5 “高內聚-弱耦合”原則 63
第6章 設計模式簡介 64
6.1 什麼是設計模式 64
6.2 設計模式的起源 65
6.3 GOF之著作 65
6.4 學習設計模式的重要性 65
6.5 合理使用模式 66
6.6 什麼是框架 67
6.7 模式分類 68
6.8 設計模式資源 69
第7章 策略模式 70
7.1 策略模式的結構與使用 70
7.1.1 策略模式的結構 70
7.1.2 策略模式的使用 74
7.2 策略模式的優點 75
7.3 適合使用策略模式的情景 75
7.4 策略模式相對繼承機制的優勢 76
7.5 舉例——加密、解密檔案 76
7.5.1 設計要求 76
7.5.2 設計實現 76
第8章 狀態模式 82
8.1 狀態模式的結構與使用 82
8.1.1 狀態模式的結構 82
8.1.2 狀態模式的使用 85
8.2 狀態切換 86
8.3 狀態模式的優點 89
8.4 適合使用狀態模式的情景 89
8.5 舉例——模擬咖啡自動售貨機 89
8.5.1 設計要求 89
8.5.2 設計實現 90
第9章 命令模式 93
9.1 命令模式的結構與使用 93
9.1.1 命令模式的結構 93
9.1.2 命令模式的使用 97
9.2 命令接口中的撤銷方法 98
9.3 命令模式的優點 101
9.4 適合使用命令模式的情景 101
9.5 舉例——控制電燈 101
9.5.1 設計要求 101
9.5.2 設計實現 101
第10章 中介者模式 105
10.1 中介者模式的結構與使用 105
10.1.1 中介者模式的結構 105
10.1.2 中介者模式的使用 108
10.2 中介者模式的優點 110
10.3 適合使用中介者模式的情景 110
10.4 舉例——組件互動 110
10.4.1 設計要求 110
10.4.2 設計實現 111
第11章 責任鏈模式 114
11.1 責任鏈模式的結構與使用 114
11.1.1 責任鏈模式的結構 114
11.1.2 責任鏈模式的使用 118
11.2 責任鏈模式的優點 118
11.3 適合使用責任鏈模式的情景 119
11.4 舉例——計算階乘 119
11.4.1 設計要求 119
11.4.2 設計實現 119
第12章 模板方法模式 123
12.1 模板方法模式的結構與使用 123
12.1.1 模板方法模式的結構 123
12.1.2 模板方法模式的使用 126
12.2 鉤子方法 127
12.3 模板方法模式的優點 130
12.4 適合使用模板方法模式的情景 130
12.5 舉例——考試與成績錄入 130
12.5.1 設計要求 130
12.5.2 設計實現 131
第13章 觀察者模式 135
13.1 觀察者模式的結構與使用 135
13.1.1 觀察者模式的結構 135
13.1.2 觀察者模式的使用 140
13.2 觀察者模式中的“推”數據與“拉”數據 141
13.3 觀察者模式的優點 144
13.4 適合使用觀察者模式的情景 145
13.5 舉例——關注天氣和旅遊信息 145
13.5.1 設計要求 145
13.5.2 設計實現 145
第13章觀察者模式 135
13.1觀察者模式的結構與使用 135
13.1.1觀察者模式的結構 135
13.1.2觀察者模式的使用 140
13.2觀察者模式中的“推”數據與“拉”數據 141
13.3觀察者模式的優點 144
13.4適合使用觀察者模式的情景 145
13.5舉例——關注天氣和旅遊信息 145
13.5.1設計要求 145
13.5.2設計實現 145
第14章訪問者模式 150
14.1訪問者模式的結構與使用 150
14.1.1訪問者模式的結構 150
14.1.2訪問者模式的使用 153
14.2雙重分派 154
14.3訪問者模式的優點 154
14.4適合使用訪問模式的情景 155
14.5舉例——評價體檢表 155
14.5.1設計要求 155
14.5.2設計實現 155
第15章裝飾模式 160
15.1裝飾模式的結構與使用 160
15.1.1裝飾模式的結構 160
15.1.2裝飾模式的使用 163
15.2使用多個裝飾者 164
15.3裝飾模式相對繼承機制的優勢 165
15.4裝飾模式的優點 166
15.5適合使用裝飾模式的情景 166
15.6舉例——讀取單詞表 166
15.6.1設計要求 166
15.6.2設計實現 167
第16章組合模式 171
16.1組合模式的結構與使用 171
16.1.1組合模式的結構 171
16.1.2組合模式的使用 174
16.2組合模式的優點 176
16.3適合使用組合模式的情景 176
16.4舉例——蘋果樹的重量及蘋果的價值 176
16.4.1設計要求 176
16.4.2設計實現 177
第17章適配器模式 180
17.1適配器模式的結構與使用 180
17.1.1適配器模式的結構 180
17.1.2適配器模式的使用 182
17.1.3適配器的適配程度 183
17.2適配器模式的優點 184
17.3適合使用適配器模式的情景 184
17.4單接口適配器 184
17.5舉例——Iterator接口與Enumeration接口 185
17.5.1設計要求 185
17.5.2設計實現 185
第18章外觀模式 188
18.1外觀模式的結構與使用 188
18.1.1外觀模式的結構 188
18.1.2外觀模式的使用 190
18.2外觀模式的優點 191
18.3適合使用外觀模式的情景 191
18.4舉例——解析檔案 191
18.4.1設計要求 191
18.4.2設計實現 192
第19章代理模式 195
19.1代理模式的結構與使用 195
19.1.1代理模式的結構 195
19.1.2代理模式的使用 197
19.2遠程代理 198
19.2.1RMI與代理模式 198
19.2.2RMI的設計細節 199
19.3代理模式的優點 203
19.4適合使用代理模式的情景 203
19.5舉例——使用遠程視窗閱讀檔案 203
19.5.1設計要求 203
19.5.2設計實現 203
第20章享元模式 207
20.1享元模式的結構與使用 207
20.1.1享元模式的結構 207
20.1.2享元模式的使用 212
20.2享元模式的優點 213
20.3適合使用享元模式的情景 213
20.4舉例——化合物 213
20.4.1設計要求 213
20.4.2設計實現 214
第21章橋接模式 218
21.1橋接模式的結構與使用 218
21.1.1橋接模式的結構 218
21.1.2橋接模式的使用 221
21.2橋接模式的優點 222
21.3適合使用橋接模式的情景 222
21.4舉例——模擬電視節目 222
21.4.1設計要求 222
21.4.2設計實現 222
第22章工廠方法模式 226
22.1工廠方法模式的結構與使用 226
22.1.1工廠方法模式的結構 226
22.1.2工廠方法模式的使用 229
22.2工廠方法模式的優點 230
22.3適合使用工廠方法模式的情景 231
22.4舉例——藥品 231
22.4.1設計要求 231
22.4.2設計實現 231
第23章抽象工廠模式 235
23.1抽象工廠模式的結構與使用 235
23.1.1抽象工廠模式的結構 235
23.1.2抽象工廠模式的使用 240
23.2工廠方法模式的優點 241
23.3適合使用抽象工廠模式的情景 242
23.4舉例——商店與西服、牛仔服 242
23.4.1設計要求 242
23.4.2設計實現 242
23.4.3模式的使用 245
第24章生成器模式 247
24.1生成器模式的結構與使用 247
24.1.1生成器模式的結構 247
24.1.2生成器模式的使用 250
24.2生成器模式的優點 251
24.3適合使用生成器模式的情景 252
24.4舉例——日曆牌 252
24.4.1設計要求 252
24.4.2設計實現 252
第25章原型模式 259
25.3原型模式的結構與使用 263
25.3.1原型模式的結構 263
25.3.2原型模式的使用 265
25.4原型模式的優點 266
25.5適合使用原型模式的情景 266
25.6舉例——克隆容器 267
25.6.1設計要求 267
25.6.2設計實現 267
第26章單件模式 270
26.1單件模式的結構與使用 270
26.1.1單件模式的結構 270
26.1.2單件模式的使用 272
26.2單件模式的優點 273
26.3適合使用單件模式的情景 273
26.4舉例——冠軍 273
26.4.1設計要求 273
26.4.2設計實現 273
參考文獻 278