第一部分 C#面向對象程序設計
第1章 設計模式概述 2
1.1 定義設計模式 3
1.2 學習過程 4
1.3 學習設計模式 4
1.4 關于面向對象方法 4
1.5 C#設計模式 5
1.6 本書的組織結構 5
第2章 C#語言的語法 6
2.1 數(shù)據(jù)類型 6
2.2 數(shù)值與字符串間的轉換 7
2.3 聲明多個變量 8
2.4 數(shù)值型常量 8
2.5 字符常量 8
2.6 變量 8
2.7 用多個等號初始化 9
2.8 一個簡單的C#程序 9
2.9 算術運算符 10
2.10 遞增運算符和遞減運算符 10
2.11 將算術語句和賦值語句合并 11
2.12 C#中的判斷 11
2.13 比較運算符 12
2.14 條件合并 12
2.15 最常見的錯誤 13
2.16 switch語句 13
2.17 C#注釋 13
2.18 有爭議的三元運算符 14
2.19 C#的循環(huán)語句 14
2.20 while循環(huán) 14
2.21 do-while語句 14
2.22 for循環(huán) 15
2.23 在for循環(huán)中用到變量時再聲明 15
2.24 for循環(huán)語句中的逗號 15
2.25 C#與C的區(qū)別 16
2.26 C#與Java的區(qū)別 16
2.27 小結 17
第3章 用C#編寫Windows程序 18
3.1 C#中的對象 18
3.2 受管語言和垃圾收集 18
3.3 C#中的類和名字空間 18
3.4 構建一個C#應用程序 19
3.5 用C#編寫一個最簡單的 Windows程序 20
3.6 Windows控件 22
3.7 Windows controls程序 25
3.8 小結 26
3.9 隨書附帶光盤中的程序 26
第4章 在C#中使用類和對象 27
4.1 關于類 27
4.2 一個簡單的溫度轉換程序 27
4.3 構造一個Temperature類 28
4.4 將判斷放在Temperature類里 30
4.5 使用類完成格式化和數(shù)值轉換工作 31
4.6 分析字符串的類 33
4.7 類與對象 34
4.8 類包含 35
4.9 初始化 36
4.10 類和屬性 36
4.11 C#的程序設計風格 38
4.12 代理 38
4.13 索引器 40
4.14 運算符重載 41
4.15 小結 41
4.16 隨書附帶光盤中的程序 41
第5章 繼承 42
5.1 構造函數(shù) 42
5.2 C#中的繪圖和Graphics 對象 42
5.3 使用繼承 44
5.4 名字空間 44
5.5 公有的、私有的和保護的 46
5.6 重載 46
5.7 virtual和override關鍵字 47
5.8 在派生類里覆蓋方法 47
5.9 使用new替換方法 48
5.10 覆蓋Windows控件 48
5.11 接口 50
5.12 抽象類 50
5.13 接口和抽象類的比較 52
5.14 小結 53
5.15 隨書附帶光盤中的程序 53
第6章 UML圖 54
6.1 繼承 55
6.2 接口 56
6.3 組合 56
6.4 圖注 57
6.5 用WithClass繪制UML圖 57
6.6 C#項目文件 58
第7章 C#中的數(shù)組、文件和異常 59
7.1 數(shù)組 59
7.2 集合對象 59
7.3 異常 61
7.4 多個異常 62
7.5 拋出異常 62
7.6 文件處理 62
7.7 文件處理中的異常 63
7.8 檢測文件末尾 64
7.9 csFile類 64
7.10 隨書附帶光盤中的程序 66
第二部分 創(chuàng)建型模式
第8章 簡單工廠模式 68
8.1 簡單工廠模式如何工作 68
8.2 示例代碼 68
8.3 兩個派生類 69
8.4 構造簡單工廠 69
8.5 數(shù)學計算中的工廠模式 71
8.6 小結 73
8.7 思考題 73
8.8 隨書附帶光盤中的程序 73
第9章 工廠方法模式 74
9.1 Swimmer類 76
9.2 Event類 76
9.3 直接排位 77
9.4 排位程序 77
9.5 其他工廠 78
9.6 何時使用工廠方法 78
9.7 思考題 79
9.8 隨書附帶光盤中的程序 79
第10章 抽象工廠模式 80
10.1 花園規(guī)劃工廠 80
10.2 添加更多的類 83
10.3 抽象工廠的效果 84
10.4 思考題 84
10.5 隨書附帶光盤中的程序 84
第11章 單件模式 85
11.1 使用靜態(tài)方法創(chuàng)建單件 85
11.2 異常與實例 86
11.3 拋出異常 86
11.4 創(chuàng)建一個類實例 86
11.5 提供一個單件的全局訪問點 87
11.6 單件模式的其他效果 87
11.7 隨書附帶光盤中的程序 87
第12章 生成器模式 88
12.1 一個投資跟蹤程序 88
12.2 使用ListBox控件中的Items集合 92
12.3 生成器模式的效果 94
12.4 思考題 95
12.5 隨書附帶光盤中的程序 95
第13章 原型模式 96
13.1 C#中的克隆 96
13.2 使用原型 96
13.3 克隆類 99
13.4 使用原型模式 101
13.5 原型管理器 105
13.6 原型模式的效果 105
13.7 思考題 105
13.8 隨書附帶光盤中的程序 105
13.9 創(chuàng)建型模式小結 105
第三部分 結構型模式
第14章 適配器模式 108
14.1 在列表之間移動數(shù)據(jù) 108
14.2 創(chuàng)建一個適配器 109
14.3 使用DataGrid 110
14.4 使用TreeView 112
14.5 類適配器 113
14.6 雙向適配器 115
14.7 C#中對象適配器與類適配器的對比 115
14.8 可插入的適配器 115
14.9 思考題 115
14.10 隨書附帶光盤中的程序 115
第15章 橋接模式 116
15.1 橋接接口 116
15.2 VisList類 118
15.3 類圖 119
15.4 擴展Bridge 119
15.5 Windows窗體充當Bridge 121
15.6 橋接模式的效果 122
15.7 思考題 122
15.8 隨書附帶光盤中的程序 122
第16章 組合模式 123
16.1 一個組合的實現(xiàn) 123
16.2 計算薪水 124
16.3 Employee類 124
16.4 Boss類 126
16.5 構造Employee樹 127
16.6 自我升職 128
16.7 雙向鏈表 128
16.8 組合模式的效果 129
16.9 一個簡單的組合 130
16.10 .NET中的組合 130
16.11 其他實現(xiàn)問題 130
16.12 思考題 130
16.13 隨書附帶光盤中的程序 130
第17章 裝飾模式 131
17.1 裝飾一個CoolButton 131
17.2 處理Decorator中的事件 132
17.3 多個Decorator 134
17.4 非可視化的Decorator 135
17.5 Decorator,Adapter和Composite 135
17.6 裝飾模式的效果 136
17.7 思考題 136
17.8 隨書附帶光盤中的程序 136
第18章 外觀模式 137
18.1 什么是數(shù)據(jù)庫 137
18.2 從數(shù)據(jù)庫中取出數(shù)據(jù) 138
18.3 數(shù)據(jù)庫的種類 138
18.4 ODBC 139
18.5 數(shù)據(jù)庫的結構 139
18.6 使用ADO.NET 139
18.7 使用ADO.NET向數(shù)據(jù)庫表添加數(shù)據(jù)行 141
18.8 構建外觀模式的各個類 142
18.9 創(chuàng)建ADO.NET的Facade 143
18.10 為每張表創(chuàng)建自己的類 147
18.11 構建Prices表 149
18.12 填寫數(shù)據(jù)庫表 151
18.13 最終的應用程序 152
18.14 Facade的構成 152
18.15 Facade的效果 153
18.16 思考題 153
18.17 隨書附帶光盤中的程序 153
第19章 享元模式 154
19.1 討論 154
19.2 示例代碼 155
19.3 處理鼠標事件和繪圖事件 159
19.4 C#中Flyweight的應用 160
19.5 共享對象 160
19.6 Copy-on-Write對象 160
19.7 思考題 160
19.8 隨書附帶光盤中的程序 160
第20章 代理模式 161
20.1 示例代碼 161
20.2 C#中的Proxy 163
20.3 Copy-on-Write 163
20.4 相關模式之間的比較 163
20.5 思考題 163
20.6 隨書附帶光盤中的程序 163
20.7 結構型模式小結 164
第四部分 行為型模式
第21章 職責鏈 166
21.1 適用范圍 166
21.2 示例代碼 167
21.3 列表框 169
21.4 設計一個幫助系統(tǒng) 170
21.5 鏈的樹形結構 173
21.6 請求的種類 174
21.7 C#中的例子 174
21.8 職責鏈 175
21.9 思考題 175
21.10 隨書附帶光盤中的程序 175
第22章 命令模式 176
22.1 動機 176
22.2 命令對象 176
22.3 構建Command對象 177
22.4 命令模式的效果 179
22.5 CommandHolder接口 179
22.6 提供Undo操作 181
22.7 思考題 185
22.8 隨書附帶光盤中的程序 185
第23章 解釋器模式 186
23.1 動機 186
23.2 適用性 186
23.3 一個簡單的報表例子 186
23.4 解釋語言 187
23.5 用于分析的對象 188
23.6 歸約分析棧 191
23.7 實現(xiàn)解釋器模式 192
23.8 解釋器模式的效果 195
23.9 思考題 195
23.10 隨書附帶光盤中的程序 196
第24章 迭代器模式 197
24.1 動機 197
24.2 迭代器示例代碼 197
24.3 過濾迭代器 199
24.4 記錄俱樂部 200
24.5 迭代器模式的效果 201
24.6 隨書附帶光盤中的程序 202
第25章 中介者模式 203
25.1 一個例子 203
25.2 控件間的相互協(xié)作 204
25.3 示例代碼 204
25.4 Mediator對象與Command對象 207
25.5 中介者模式的效果 207
25.6 單接口的中介者 208
25.7 實現(xiàn)問題 209
25.8 隨書附帶光盤中的程序 209
第26章 備忘錄模式 210
26.1 動機 210
26.2 實現(xiàn) 210
26.3 示例代碼 210
26.4 用戶界面中的命令對象 215
26.5 處理鼠標事件和Paint事件 216
26.6 備忘錄模式的效果 217
26.7 思考題 218
26.8 隨書附帶光盤中的程序 218
第27章 觀察者模式 219
27.1 觀察顏色變化 219
27.2 發(fā)給觀察者的消息 221
27.3 觀察者模式的效果 223
27.4 隨書附帶光盤中的程序 223
第28章 狀態(tài)模式 224
28.1 示例代碼 224
28.2 狀態(tài)之間的轉換 227
28.3 Mediator如何與StateManager互相協(xié)作 228
28.4 處理Fill狀態(tài) 231
28.5 處理Undo列表 231
28.6 VisRectangle類和VisCircle類 233
28.7 Mediator類和“萬能類” 235
28.8 狀態(tài)模式的效果 235
28.9 狀態(tài)轉換 235
28.10 思考題 235
28.11 隨書附帶光盤中的程序 236
第29章 策略模式 237
29.1 動機 237
29.2 示例代碼 237
29.3 Context類 238
29.4 程序中的Command對象 238
29.5 線狀圖和條形圖策略 239
29.6 用C#繪制圖形 239
29.7 策略模式的效果 242
29.8 隨書附帶光盤中的程序 242
第30章 模板方法模式 243
30.1 動機 243
30.2 Template類中的方法種類 244
30.3 示例代碼 245
30.4 三角形繪圖程序 247
30.5 模板與反向調用 248
30.6 小結與效果 248
30.7 隨書附帶光盤中的程序 249
第31章 訪問者模式 250
31.1 動機 250
31.2 何時使用訪問者模式 251
31.3 示例代碼 251
31.4 訪問類 252
31.5 訪問幾個類 253
31.6 Boss也是Employee 254
31.7 Visitor的雜物箱操作 255
31.8 雙分派 256
31.9 為什么這樣做 256
31.10 訪問一系列的類 256
31.11 訪問者模式的效果 256
31.12 思考題 257
31.13 隨書附帶光盤中的程序 257
參考文獻 258