《重構與模式》目錄

讀過設計模式的童靴,可以再讀本書,加深理解


目錄

第1章 本書的寫作緣由 1


1.1 過度設計 1
1.2 模式萬靈丹 2
1.3 設計不足 2
1.4 測試驅動開發和持續重構 3
1.5 重構與模式 5
1.6 演進式設計 6
第2章 重構 7


2.1 何謂重構 7
2.2 重構的動機 8
2.3 衆目睽睽 9
2.4 可讀性好的代碼 10
2.5 保持清晰 11
2.6 循序漸進 11
2.7 設計欠賬 12
2.8 演變出新的架構 13
2.9 複合重構與測試驅動的重構 13
2.10 複合重構的優點 15
2.11 重構工具 15
第3章 模式 17


3.1 何謂模式 17
3.2 模式癡迷 18
3.3 實現模式的方式不止一種 20
3.4 通過重構實現、趨向和去除模式 22
3.5 模式是否會使代碼更加複雜 24
3.6 模式知識 25
3.7 使用模式的預先設計 26
第4章 代碼壞味 29


4.1 重複代碼(Duplicated Code) 31
4.2 方法過長(Long Method) 31
4.3 條件邏輯太複雜(Conditional Complexity) 32
4.4 基本類型迷戀(Primitive Obsession) 33
4.5 不恰當的暴露(Indecent Exposure) 33
4.6 解決方案蔓延(Solution Sprawl) 34
4.7 異曲同工的類(Alternative Classes with Different Interfaces) 34
4.8 冗贅類(Lazy Class) 34
4.9 類過大(Large Class) 34
4.10 分支語句(Switch Statement) 35
4.11 組合爆炸(Combinatorial Explosion) 35
4.12 怪異解決方案(Oddball Solution) 35
第5章 模式導向的重構目錄 37


5.1 重構的格式 37
5.2 本目錄中引用的項目 38
5.2.1 XML Builder 39
5.2.2 HTML Parser 39
5.2.3 貸款風險計算程序 40
5.3 起點 40
5.4 學習順序 41
第6章 創建 43


6.1 用Creation Method替換構造函數 44
6.1.1 動機 44
6.1.2 做法 46
6.1.3 示例 46
6.1.4 變體 51
6.2 將創建知識搬移到Factory 52
6.2.1 動機 53
6.2.2 做法 55
6.2.3 示例 56
6.3 用Factory封裝類 61
6.3.1 動機 62
6.3.2 做法 63
6.3.3 示例 63
6.3.4 變體 66
6.4 用Factory Method引入多態創建 68
6.4.1 動機 68
6.4.2 做法 69
6.4.3 示例 71
6.5 用Builder封裝Composite 74
6.5.1 做法 76
6.5.2 示例 77
6.5.3 變體 87
6.6 內聯Singleton 90
6.6.1 動機 90
6.6.2 做法 92
6.6.3 示例 93
第7章 簡化 97


7.1 組合方法 98
7.1.1 動機 98
7.1.2 做法 100
7.1.3 示例 100
7.2 用Strategy替換條件邏輯 103
7.2.1 動機 103
7.2.2 做法 105
7.2.3 示例 106
7.3 將裝飾功能搬移到Decorator 115
7.3.1 動機 115
7.3.2 做法 119
7.3.3 示例 120
7.4 用State替換狀態改變條件語句 134
7.4.1 動機 134
7.4.2 做法 135
7.4.3 示例 136
7.5 用Composite替換隱含樹 144
7.5.1 動機 144
7.5.2 做法 147
7.5.3 示例 148
7.6 用Command替換條件調度程序 155
7.6.1 動機 156
7.6.2 做法 157
7.6.3 示例 158
第8章 泛化 165


8.1 形成Template Method 166
8.1.1 動機 167
8.1.2 做法 168
8.1.3 示例 168
8.2 提取Composite 173
8.2.1 動機 173
8.2.2 做法 174
8.2.3 示例 175
8.3 用Composite替換一/多之分 181
8.3.1 動機 181
8.3.2 做法 183
8.3.3 示例 184
8.4 用Observer替換硬編碼的通知 191
8.4.1 動機 191
8.4.2 做法 192
8.4.3 示例 193
8.5 通過Adapter統一接口 200
8.5.1 動機 200
8.5.2 做法 201
8.5.3 示例 202
8.6 提取Adapter 209
8.6.1 動機 209
8.6.2 做法 211
8.6.3 示例 211
8.6.4 變體 217
8.7 用Interpreter替換隱式語言 218
8.7.1 動機 218
8.7.2 做法 220
8.7.3 示例 221
第9章 保護 231


9.1 用類替換類型代碼 232
9.1.1 動機 232
9.1.2 做法 234
9.1.3 示例 235
9.2 用Singleton限制實例化 240
9.2.1 動機 240
9.2.2 做法 241
9.2.3 示例 241
9.3 引入Null Object 243
9.3.1 動機 244
9.3.2 做法 245
9.3.3 示例 246
第10章 聚集操作 251


10.1 將聚集操作搬移到Collecting Parameter 252
10.1.1 動機 252
10.1.2 做法 253
10.1.3 示例 254
10.2 將聚集操作搬移到Visitor 258
10.2.1 動機 258
10.2.2 做法 262
10.2.3 示例 266
第11章 實用重構 273


11.1 鏈構造函數 274
11.1.1 動機 274
11.1.2 做法 275
11.1.3 示例 275
11.2 統一接口 277
11.2.1 動機 277
11.2.2 做法 278
11.2.3 示例 278
11.3 提取參數 279
11.3.1 動機 279
11.3.2 做法 279
11.3.3 示例 280
跋 281
參考文獻 283
索引 287

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章