书籍详情
C#设计模式
作者:(美)Steven John Metsker著;颜炯译;颜炯译
出版社:中国电力出版社
出版时间:2005-07-01
ISBN:9787508334929
定价:¥42.00
购买这本书可以去
内容简介
本书是第一部关于C#和.NET设计模式的权威指导著作,为基于C#语言和Microsoft®.NET框架的开发人员学习设计模式和应用设计模式提供了一个完整全面的理论框架和大量的详细应用实例。本书内容覆盖了所有23个经典的“四人小组”设计模式,具体包括:适配器,外观,合成,桥接,单件,观察者,中介者,代理,职责链,享元,生成器,工厂方法,抽象工厂,原型,备忘录,模板方法,状态,策略,命令,解释器,装饰,迭代器,以及访问者等模式。本书提供了大量的C#代码,解释说明了在.NET框架下如何应用上述设计模式。读者在阅读本书之后,将会对关于C#语言和Microsoft®.NET框架的设计模式的整体概念、基本原理、内部实现有一个清晰的认识,并可以将设计模式应用于基于C#语言和.NET框架的面向对象软件开发实践当中。本书还提供了丰富的附录资源,有兴趣的读者可以通过利用这些资源进一步增强对设计模式的理解。
作者简介
STEVENJOHNMETSKER在设计模式、面向对象程序设计及软件设计方法学等领域有广泛的著述。SteVen是CapTech风险投资公司的一位软件业务咨询人员,经常在OOPSLA会议上发言。他的著作发表在《JavaReport》、《JOOP》、《DistributedObjectComputing》、《ObjectMagazine》等杂志上。Steven在Addison—Wesley公司出版的著作包括:《DesignPatternsJavaWorkbook》(影印版《设计模式Java手册》已由中国电力出版社出版)和《BuildingParsersinJava》。
目录
第1章 引言 1
1.1 为什么使用模式? 1
1.2 为什么使用设计模式? 2
1.3 为什么使用C#语言? 2
1.4 UML 3
1.5 本书给出的问题 3
1.6 本书的组织方式 4
1.7 欢迎来到Oozinoz公司! 5
1.8 小结 5
第1部分 接口型模式
第2章 接口型模式介绍 9
2.1 接口与抽象类 9
2.2 接口与委托 10
2.3 接口与属性 13
2.4 接口的细节 14
2.5 小结 14
2.6 普通接口无法提供的内容 15
第3章 适配器模式 16
3.1 对接口进行适配 16
3.2 类适配器与对象适配器 19
3.3 对.NET的数据进行适配 22
3.4 小结 25
第4章 外观模式 27
4.1 一个普通的外观 27
4.2 应用外观模式进行代码重构 29
4.3 外观、公用例程以及演示 36
4.4 小结 38
第5章 合成模式 39
5.1 一个普通的合成 39
5.2 合成的递归行为 39
5.3 合成、树形结构,以及环形结构 41
5.4 带环形结构的合成 45
5.5 环形结构产生的影响 48
5.6 小结 48
第6章 桥接模式 49
6.1 一个普通的抽象 49
6.2 从抽象到桥接 51
6.3 作为桥接的驱动器 53
6.4 数据库驱动器 53
6.5 小结 53
第2部分 职责型模式
第7章 职责型模式介绍 57
7.1 普通的职责 57
7.2 利用可访问性进行职责控制 58
7.3 小结 61
7.4 普通职责无法提供的内容 61
第8章 单件模式 62
8.1 单件模式的机制 62
8.2 单件与线程 63
8.3 识别单件模式 64
8.4 小结 65
第9章 观察者模式 66
9.1 C#语言对观察者的支持 66
9.2 委托机制 66
9.3 一个经典的例子——GUI中的观察者模式 69
9.4 模型/视图/控制器 75
9.5 分层 77
9.6 小结 80
第10章 中介者模式 81
10.1 一个经典实例——GUI中介者 81
10.2 关系完整性中介者 84
10.3 小结 90
第11章 代理模式 91
11.1 一个简单的代理 91
11.2 数据代理 94
11.3 远程代理 99
11.4 小结 103
第12章 职责链模式 104
12.1 一个普通的职责链模式 104
12.2 重构为职责链模式 105
12.3 将一个链进行固定 108
12.4 不带合成结构的职责链模式 109
12.5 小结 109
第13章 享元模式 111
13.1 不可改变性 111
13.2 提取一个享元中的不可改变部分 112
13.3 共享享元 113
13.4 小结 116
第3部分 构造型模式
第14章 构造型模式介绍 119
14.1 对象构造过程中产生的一些困难 119
14.2 小结 121
14.3 普通的构造方法无法提供的内容 121
第15章 生成器模式 123
15.1 一个普通的生成器模式 123
15.2 在约束下进行对象生成 125
15.3 一个更宽容的生成器 127
15.4 小结 128
第16章 工厂方法模式 129
16.1 一个经典实例——枚举器 129
16.2 识别工厂方法模式 131
16.3 确定对哪个类进行实例化 131
16.4 平行层次结构中的工厂方法模式 132
16.5 小结 134
第17章 抽象工厂模式 135
17.1 一个经典实例——GUI工具箱 135
17.2 抽象工厂与工厂方法 139
17.3 命名空间与抽象工厂 142
17.4 小结 142
第18章 原型模式 143
18.1 作为工厂的原型 143
18.2 利用克隆进行原型化 144
18.3 小结 145
第19章 备忘录模式 147
19.1 一个经典实例——使用备忘录完
成取消操作 147
19.2 备忘录的持久性 153
19.3 跨越多次会话的永久备忘录 153
19.4 小结 155
第4部分 操作型模式
第20章 操作型模式介绍 159
20.1 操作与方法 159
20.2 特征标记 160
20.3 委托 161
20.4 异常 162
20.5 算法与多态 162
20.6 小结 163
20.7 普通操作无法提供的内容 164
第21章 模板方法模式 165
21.1 一个经典实例——排序 165
21.2 完成一个算法 167
21.3 模板方法的钩子 169
21.4 重构为模板方法 171
21.5 小结 172
第22章 状态模式 173
22.1 对状态进行建模 173
22.2 重构为状态模式 176
22.3 使状态成为常量 180
22.4 小结 181
第23章 策略模式 183
23.1 对策略进行建模 183
23.2 重构为策略模式 185
23.3 对策略模式和状态模式进行比较 189
23.4 对策略模式和模板方法模式进行比较 190
23.5 小结 190
第24章 命令模式 191
24.1 一个经典实例——菜单命令 191
24.2 利用命令模式提供一个服务 192
24.3 命令模式的钩子 195
24.4 命令模式与其他模式的关系 196
24.5 小结 197
第25章 解释器模式 199
25.1 一个解释器实例 199
25.2 解释器、语言以及扫描分析器 210
25.3 小结 210
第5部分 扩展型模式
第26章 扩展型模式介绍 213
26.1 面向对象设计的基本原则 213
26.2 Liskov替代原则 213
26.3 Demeter法则 215
26.4 消除代码的气味 216
26.5 普通扩展无法提供的内容 216
26.6 小结 217
第27章 装饰模式 219
27.1 一个经典例子——流 219
27.2 函数包装器 226
27.3 GUI中的装饰器 232
27.4 装饰模式与其他模式的关系 232
27.5 小结 232
第28章 迭代器模式 234
28.1 一般的迭代 234
28.2 线程安全的迭代 234
28.3 对一个合成进行迭代 239
28.4 小结 248
第29章 访问者模式 249
29.1 访问者机制 249
29.2 一个普通的访问者模式 250
29.3 访问者环 255
29.4 对访问者模式的争论 259
29.5 小结 260
附录A 使用指导 261
A.1 从本书获得更多的知识 261
A.2 理解经典实例 261
A.3 在代码中应用设计模式 262
A.4 坚持学习 262
附录B 答案 264
B.1 接口型模式介绍 264
B.2 适配器模式 266
B.3 外观模式 269
B.4 合成模式 271
B.5 桥接模式 273
B.6 职责型模式介绍 275
B.7 单件模式 277
B.8 观察者模式 278
B.9 中介者模式 280
B.10 代理模式 284
B.11 职责链模式 285
B.12 享元模式 288
B.13 构造型模式介绍 291
B.14 生成器模式 293
B.15 工厂方法模式 295
B.16 抽象工厂模式 299
B.17 原型模式 302
B.18 备忘录模式 304
B.19 操作型模式介绍 306
B.20 模板方法模式 307
B.21 状态模式 309
B.22 策略模式 310
B.23 命令模式 312
B.24 解释器模式 314
B.25 扩展型模式介绍 316
B.26 装饰模式 317
B.27 迭代器模式 319
B.28 访问者模式 321
附录C OOZINOZ系统的源代码 323
C.1 获取代码与使用代码 323
C.2 构建Oozinoz系统的代码 323
C.3 帮助Oozinoz代码查找相关文件 324
C.4 利用NUnit对代码进行测试 324
C.5 如何查找相关文件 325
C.6 小结 325
附录D UML概览 326
D.1 类 326
D.2 类关系 327
D.3 接口 328
D.4 委托与事件 329
D.5 对象 330
D.6 状态 331
术语表 332
参考文献 338
1.1 为什么使用模式? 1
1.2 为什么使用设计模式? 2
1.3 为什么使用C#语言? 2
1.4 UML 3
1.5 本书给出的问题 3
1.6 本书的组织方式 4
1.7 欢迎来到Oozinoz公司! 5
1.8 小结 5
第1部分 接口型模式
第2章 接口型模式介绍 9
2.1 接口与抽象类 9
2.2 接口与委托 10
2.3 接口与属性 13
2.4 接口的细节 14
2.5 小结 14
2.6 普通接口无法提供的内容 15
第3章 适配器模式 16
3.1 对接口进行适配 16
3.2 类适配器与对象适配器 19
3.3 对.NET的数据进行适配 22
3.4 小结 25
第4章 外观模式 27
4.1 一个普通的外观 27
4.2 应用外观模式进行代码重构 29
4.3 外观、公用例程以及演示 36
4.4 小结 38
第5章 合成模式 39
5.1 一个普通的合成 39
5.2 合成的递归行为 39
5.3 合成、树形结构,以及环形结构 41
5.4 带环形结构的合成 45
5.5 环形结构产生的影响 48
5.6 小结 48
第6章 桥接模式 49
6.1 一个普通的抽象 49
6.2 从抽象到桥接 51
6.3 作为桥接的驱动器 53
6.4 数据库驱动器 53
6.5 小结 53
第2部分 职责型模式
第7章 职责型模式介绍 57
7.1 普通的职责 57
7.2 利用可访问性进行职责控制 58
7.3 小结 61
7.4 普通职责无法提供的内容 61
第8章 单件模式 62
8.1 单件模式的机制 62
8.2 单件与线程 63
8.3 识别单件模式 64
8.4 小结 65
第9章 观察者模式 66
9.1 C#语言对观察者的支持 66
9.2 委托机制 66
9.3 一个经典的例子——GUI中的观察者模式 69
9.4 模型/视图/控制器 75
9.5 分层 77
9.6 小结 80
第10章 中介者模式 81
10.1 一个经典实例——GUI中介者 81
10.2 关系完整性中介者 84
10.3 小结 90
第11章 代理模式 91
11.1 一个简单的代理 91
11.2 数据代理 94
11.3 远程代理 99
11.4 小结 103
第12章 职责链模式 104
12.1 一个普通的职责链模式 104
12.2 重构为职责链模式 105
12.3 将一个链进行固定 108
12.4 不带合成结构的职责链模式 109
12.5 小结 109
第13章 享元模式 111
13.1 不可改变性 111
13.2 提取一个享元中的不可改变部分 112
13.3 共享享元 113
13.4 小结 116
第3部分 构造型模式
第14章 构造型模式介绍 119
14.1 对象构造过程中产生的一些困难 119
14.2 小结 121
14.3 普通的构造方法无法提供的内容 121
第15章 生成器模式 123
15.1 一个普通的生成器模式 123
15.2 在约束下进行对象生成 125
15.3 一个更宽容的生成器 127
15.4 小结 128
第16章 工厂方法模式 129
16.1 一个经典实例——枚举器 129
16.2 识别工厂方法模式 131
16.3 确定对哪个类进行实例化 131
16.4 平行层次结构中的工厂方法模式 132
16.5 小结 134
第17章 抽象工厂模式 135
17.1 一个经典实例——GUI工具箱 135
17.2 抽象工厂与工厂方法 139
17.3 命名空间与抽象工厂 142
17.4 小结 142
第18章 原型模式 143
18.1 作为工厂的原型 143
18.2 利用克隆进行原型化 144
18.3 小结 145
第19章 备忘录模式 147
19.1 一个经典实例——使用备忘录完
成取消操作 147
19.2 备忘录的持久性 153
19.3 跨越多次会话的永久备忘录 153
19.4 小结 155
第4部分 操作型模式
第20章 操作型模式介绍 159
20.1 操作与方法 159
20.2 特征标记 160
20.3 委托 161
20.4 异常 162
20.5 算法与多态 162
20.6 小结 163
20.7 普通操作无法提供的内容 164
第21章 模板方法模式 165
21.1 一个经典实例——排序 165
21.2 完成一个算法 167
21.3 模板方法的钩子 169
21.4 重构为模板方法 171
21.5 小结 172
第22章 状态模式 173
22.1 对状态进行建模 173
22.2 重构为状态模式 176
22.3 使状态成为常量 180
22.4 小结 181
第23章 策略模式 183
23.1 对策略进行建模 183
23.2 重构为策略模式 185
23.3 对策略模式和状态模式进行比较 189
23.4 对策略模式和模板方法模式进行比较 190
23.5 小结 190
第24章 命令模式 191
24.1 一个经典实例——菜单命令 191
24.2 利用命令模式提供一个服务 192
24.3 命令模式的钩子 195
24.4 命令模式与其他模式的关系 196
24.5 小结 197
第25章 解释器模式 199
25.1 一个解释器实例 199
25.2 解释器、语言以及扫描分析器 210
25.3 小结 210
第5部分 扩展型模式
第26章 扩展型模式介绍 213
26.1 面向对象设计的基本原则 213
26.2 Liskov替代原则 213
26.3 Demeter法则 215
26.4 消除代码的气味 216
26.5 普通扩展无法提供的内容 216
26.6 小结 217
第27章 装饰模式 219
27.1 一个经典例子——流 219
27.2 函数包装器 226
27.3 GUI中的装饰器 232
27.4 装饰模式与其他模式的关系 232
27.5 小结 232
第28章 迭代器模式 234
28.1 一般的迭代 234
28.2 线程安全的迭代 234
28.3 对一个合成进行迭代 239
28.4 小结 248
第29章 访问者模式 249
29.1 访问者机制 249
29.2 一个普通的访问者模式 250
29.3 访问者环 255
29.4 对访问者模式的争论 259
29.5 小结 260
附录A 使用指导 261
A.1 从本书获得更多的知识 261
A.2 理解经典实例 261
A.3 在代码中应用设计模式 262
A.4 坚持学习 262
附录B 答案 264
B.1 接口型模式介绍 264
B.2 适配器模式 266
B.3 外观模式 269
B.4 合成模式 271
B.5 桥接模式 273
B.6 职责型模式介绍 275
B.7 单件模式 277
B.8 观察者模式 278
B.9 中介者模式 280
B.10 代理模式 284
B.11 职责链模式 285
B.12 享元模式 288
B.13 构造型模式介绍 291
B.14 生成器模式 293
B.15 工厂方法模式 295
B.16 抽象工厂模式 299
B.17 原型模式 302
B.18 备忘录模式 304
B.19 操作型模式介绍 306
B.20 模板方法模式 307
B.21 状态模式 309
B.22 策略模式 310
B.23 命令模式 312
B.24 解释器模式 314
B.25 扩展型模式介绍 316
B.26 装饰模式 317
B.27 迭代器模式 319
B.28 访问者模式 321
附录C OOZINOZ系统的源代码 323
C.1 获取代码与使用代码 323
C.2 构建Oozinoz系统的代码 323
C.3 帮助Oozinoz代码查找相关文件 324
C.4 利用NUnit对代码进行测试 324
C.5 如何查找相关文件 325
C.6 小结 325
附录D UML概览 326
D.1 类 326
D.2 类关系 327
D.3 接口 328
D.4 委托与事件 329
D.5 对象 330
D.6 状态 331
术语表 332
参考文献 338
猜您喜欢