设计模式-基于C#的工程化实现及扩展 (目录)
非常感谢博文的周老师、陈琼还有几位编辑的提点,目录修正了好几次。
昨天怪怪同学、李会军同学、王涛同学还给了很多建议,对于俺从技术或读者的角度改进这本书有很大的启发和帮助,我正在修改。
Section I
Section I:准备内容 1
发掘C#语言面向对象化设计的潜力 1
第2章 C#面向对象化开发扩展
2.1 C# 部分语法内容扩展
2.1.1命名空间(Namespace) 2
2.1.1.1 Why和尴尬的现状 2
2.1.1.2 关于Namespace的示例 3
2.1.1.3 小结 4
2.1.2 委托(Delegate) 4
2.1.2.1 用Delegate完成异步调用 4
2. 1.2.2 1对n的通知 5
2. 1.2.3 调用匿名方法 7
2. 1.2.4 调用重载方法 8
2. 1.2.5 小结 10
2.1.3 泛型(Generics) 10
2. 1.3.1 抽象 10
2. 1.3.2 应用于模式 11
2. 1.3.3容器 14
2. 1.3.4类型参数约束 14
2. 1.3.5 小结 16
2.1.4 属性(Attribute) 16
2. 1.4.1 用Attribute指导模式 16
2. 1.4.2 进一步方便客户程序调用 19
2. 1.4.3 小结 20
2.1.5 索引器(Indexer) 20
2. 1.5.1 服务于集合 20
2. 1.5.2 封装单列集合的访问 21
2. 1.5.3 多列的集合 23
2. 1.5.4实现类似RDBMS中联合主键或唯一性索引的访问 24
2. 1.5.5通过委托传递索引规则 24
2. 1.5.6 小结 25
2.1.6 迭代器(Iterator) 25
2. 1.6.1 基本应用 26
2. 1.6.2 简化复杂结构的遍历 27
2. 1.6.3 小结 31
2.2 可重载运算符(Overloadable Operators)与转换运算符(Conversion Operators) 32
2.2.1 The Day After Someday 32
2.2.2 用于有限的状态迭代 33
2.2.3 操作集合 33
2.2.4类型的适配 35
2.2.5小结 36
2.3 对象化配置访问(Configuration) 36
2.3.1 认识.Net Framework提供的主要配置实体类 37
2.3.2 应用实例 38
2.3.3小结 46
2.4 实现依赖注入 46
2.4.1 背景介绍 46
2.4.2 示例情景 47
2.4.3 Constructor注入 49
2.4.4 Setter注入 50
2.4.5 接口注入 51
2.4.6 基于Attribute实现注入——Attributer 52
2.4.7 小结 53
第3章 开始每个设计模式之前
3.1 new()的替代品 55
3.2 准备一个轻量的内存Cache 57
3.3 准备一个集中访问配置文件的Broker 60
3.4 Web? Not Web? 63
3.5 小结 75
Section II
Section II:创建型模式 76
第4章 工厂 & 工厂方法模式(Factory & Factory Method)
4.1 简单工厂: 77
4.1.1 最简单的工厂类 77
4.1.2 参数化工厂 81
4.1.3 简单工厂局限性 81
4.2 意图、动机、适用性、参与者、结构和示例 81
4.3 解耦Concrete Factory与客户程序 83
4.4 基于配置文件的Factory 84
4.5 批量对象Factory 87
4.5.1 开发情景 87
4.5.2定义产品类型容器 88
4.5.3 定义具有批量任务特征的批量工厂和产品类型容器 89
4.5.4定义Director 90
4.5.5设计由Director指导生产的客户程序,并进行测试 91
4.6 基于类型参数的Generic Factory 93
4.7 Delegate Factory 95
4.8 小结 96
第5章 单件模式(Singleton)
5.1 意图、动机、适用性、参与者、结构和示例 99
5.2 线程安全的Singleton 102
5.3 防止那些不显而易见的破坏因素 104
5.4 细颗粒度Singleton 105
5.4.1背景讨论 105
5.4.2解决Windows Form下的细颗粒度Singleton问题 105
5.4.3解决Web Form下的细颗粒度Singleton问题 107
5.4.4更通用的细颗粒度Singleton 109
5.5 自动更新的Singleton 120
5.6 参数化Singleton 121
5.7 跨进程Singleton 126
5.8 Singleton的扩展——Singleton-N 127
5.8.1定义具有执行状态的抽象对象 128
5.8.2定义相应的Singleton-N实例集合 129
5.8.3在基本Singleton模式实现的框架下引入实例集合 130
5.9 基于配置的Singleton 131
5.10 基于类型参数的Generic Singleton 132
5.11 生成Singleton对象的Factory 141
5.12 小结 141
第6章 抽象工厂模式(Abstract Factory)
说明 143
6.1 意图、动机、适用性、参与者、结构和示例 143
6.2 具有Type Mapper的Abstact Factory 146
6.2.1 通过Type Mapper实现通用AbstractFactory类型 146
6.2.2 经典抽象工厂模式“硬伤”的处理 147
6.3 Type Mapper / Abstract Factory 148
6.3.1 分析 148
6.3.2 构造TypeMapper、TypeMapperDictionary 150
6.3.3 定义具有TypeMapper属性的抽象工厂 150
6.3.4 定义实体TypeMapper和实体工厂 151
6.3.5 定义AssemblyMechanism 151
6.5 基于配置的Abstract Factory 152
6.6 基于Delegate的异步Factory 155
6.7 小结 157
第7章 创建者模式(Builder_Obsoleted)
7.1 意图、动机、适用性、参与者、结构和示例 160
7.2 异步调用的BuildUp() 162
7.3 基于Attribute的Builder 165
7.3.1 分析 165
7.3.1.1 工具类型设计 165
7.3.1.2定义用于指导BuildPart过程的属性 166
7.3.1.3定义具有BuildPart自动发现机制的动态Builder 167
7.4 具有BuildUp()和TearDown()能力的动态Builder 169
7.5 基于配置的Builder 171
7.5.1 分析 171
7.5.1.1用UML设计抽象类型并表示为XSD 173
7.5.1.2删除XSD中不经常变化的内容 173
7.5.1.3 映射为配置节或配置元素 174
7.5.1.4 实现配置实体对象 175
7.5.1.5实现基于配置的创建者 179
7.6 用Iterator控制BuildUp()和TearDown()次序 180
7.7 小结 182
7.7.1基于类型参数的Generic Builder 183
7.7.2分析 183
7.7.3重新定义抽象产品类型和抽象创建者 184
第8章 原型模式(Prototype)
8.1意图、动机、适用性、参与者、结构和示例 186
8.2浅表复制和深层复制 190
8.2.1概念 190
8.2.2完成工具类SerializationHelper 191
8.2.3用NonSerializedAttribute影响序列化 193
8.2.4用ISerializable定制复制过程 194
8.3重新定义原型方法 196
8.4同时支持和序列化的泛型集合类型处理……………………………………………..197
8.5小结 197
Section III
Section III:结构型模式 198
第9章 适配器模式(Adapter)
9.1意图、动机、适用性、参与者、结构和示例 199
9.2 1:N的组适配器 202
9.3 Adapter——Adapter互联模式 205
9.3.1分析 205
9.3.2方式一:客户程序直接调度Adapter 207
9.3.3方式二:借助Endpoint实现同步调用 207
9.3.4方式三:借助反射和Endpoint实现异步调用 208
9.4基于配置的Adapter 209
9.5 XML数据的适配过程 210
9.6小结 212
第10章 桥模式(Bridge)
10.1意图、动机、适用性、参与者、结构和示例 215
10.2多级Bridge 218
10.3基于配置的Bridge 221
10.4具有上下文内容的Bridge 223
10.5小结 225
第11章 组合模式(Composite)
11.1意图、动机、适用性、参与者、结构和示例 228
11.2用迭代器遍历组合类型 232
11.3服务于XML对象的组合模式 234
11.4小结 237
第12章 装饰模式(Decorator)
12.1意图、动机、适用性、参与者、结构和示例 239
12.2对Decorator进行动态更新 243
12.2.1分析 243
12.2.2重新定义IDecorator 244
12.2.3定义具体的IState类型 245
12.2.4根据IState修改每个Decorator类型 246
12.2.5验证“动态”修改Decorator的能力 247
12.3设计Decorator与Builder协作的产物 248
12.4用Attribute把Decorator做成标签 250
12.4.1对更为“彻底”的Attribute注入方式的考虑 250
12.4.2方式1:采用.NET平台自带的AOP机制实现 251
12.4.3方式2:自定义代理拦截框架方式 254
12.4.4进一步分析 257
12.5小结 257
第13章 外观模式(Façade)
13.1意图、动机、适用性、参与者、结构和示例 259
13.2 Façade接口 262
13.3 Remote Façade 263
13.4面向性能考虑的升级版Remote Façade——Data Transfer Object模式 266
13.5平台、开发语言无关的抽象Façade接口——WSDL 270
13.6面向使用者考虑的Fluent Interface设计 270
13.7小结 272
第14章 享元模式(Flyweight)
14.1意图、动机、适用性、参与者、结构和示例 275
14.2基于配置的Flyweight 277
14.3综合类型系统的Flyweight——Object Pool 278
14.3.1对象池的应用背景 279
14.3.2总体技术结构 279
14.3.3抽象类型类型实体设计 280
14.3.4用经典的享元模式实现对象缓冲 280
14.3.5示例 281
14.4线程级Flyweight 284
14.5通过Delegate和队列实现异步Flyweight 285
14.6小结 286
第15章 代理模式(Proxy)
15.1意图、动机、适用性、参与者、结构和示例 288
15.2远程访问代理 290
15.2.1第一步、定义远程访问的服务协议 291
15.2.2第二步、定义服务端的配置文件及相应的宿主程序 291
15.2.3第三步、生成客户端远程代理(Proxy)类型 292
15.2.4第四步、编写客户端程序 293
15.3数据访问代理 294
15.4对象缓存代理 296
15.5通过IList<Delegate>实现Proxy的PreProcess和PostProcess 298
15.5.1第一步、定义外部处理机制的抽象结构 299
15.5.2第二步、定义新增处理的配置信息 300
15.5.3第三步、定义配置解析对象 301
15.5.4第四步、修正服务端和代理类的处理过程 302
15.6小结 302
Section IV
Section IV:行为型模式 301
第16章 职责链模式(Chain of Responsibility)
16.1意图、动机、适用性、参与者、结构和示例 304
16.2具有断点的Chain of Responsibility 308
16.3更多分支的链式操作 310
16.4基于配置的动态Chain of Responsibility 313
16.5小结 316
第17章 模版方法模式(Template Method)
17.1意图、动机、适用性、参与者、结构和示例 318
17.2多Template Method 320
17.3基于Delegate的方法Template Method 324
17.4基于Generic的类型Template Method 325
17.5基于配置的动态Template Method 326
17.6小结 327
第18章 解释器模式(Interpreter)
18.1意图、动机、适用性、参与者、结构和示例 330
18.2基于正则表达式的Interpreter 333
18.3基于字典信息的Interpreter 337
18.4 Abstract Interpreter 342
18.5用XSD定制业务语义的Interpreter 343
18.6小结 344
第19章 命令模式(Command)
19.1意图、动机、适用性、参与者、结构和示例 347
19.2用Delegate实现轻量级的Command 350
19.3异步Command机制 352
19.4复合Command 356
19.4.1借助外观模式实现简单封装的复合Command 357
19.4.2借助组合模式实现复合Command 359
19.5 Queued Command 361
19.6小结 362
第20章 迭代器模式(Iterator)
20.1意图、动机、适用性、参与者、结构和示例 365
20.2 C#化的Iterator 367
20.3小结 369
第21章 中介者模式(Mediator)
21.1中介者模式意图、动机、适用性、参与者、结构和示例 373
21.2基于Delegate和事件的松耦合Mediator 378
21.3基于配置的动态Mediator 380
21.4基于SOAP调用的Mediator 382
21.5小结 383
第22章 备忘录模式(Memento)
22.1意图、动机、适用性、参与者、结构和示例 386
22.2栈式备忘录模式 391
22.3 Memento的序列化和持久化 394
22.4小结 397
第23章 观察者模式(Observer)
23.1意图、动机、适用性、参与者、结构和示例 402
23.2 NET内置的Observer机制——事件 406
23.3具有Observer的集合类型 408
23.4面向服务接口的Observer 410
23.5小结 413
第24章 状态模式(State)
24.1意图、动机、适用性、参与者、结构和示例 416
24.2 State的序列化和持久化 420
24.3主动方式State 423
24.4基于Delegate和事件的触发式State 423
24.5涉及用户交互的State 426
24.6用WF完成更易于编排的State 426
24.7小结 428
第25章 策略模式(Strategy)
25.1意图、动机、适用性、参与者、结构和示例 431
25.2 Strategy与Interpreter协作 433
25.3充分利用.NET Framework自带的Strategy接口 434
25.4通过Delegate实现动态Strategy 437
25.5小结 438
第26章 访问者模式(Visitor)
26.1意图、动机、适用性、参与者、结构和示例 440
26.2借助Reflection实现Visitor 445
26.3基于Delegate和事件的松耦合Visitor 447
26.4小结 447
Section V
Section V:小颗粒度基础模式和应用案例 448
第27章 成例(Idioms)
27.1 Partial Class 449
27.1.1组合 449
27.1.2多个侧面 450
27.1.3与Visual Studio Add-ins的结合 452
27.1.4小结 452
27.2 Gateway 452
27.2.1封装本地API的Gateway 453
27.2.2 Gateway封装非C#语言访问接口 455
27.2.3 Gateway封装通用操作方法 455
27.2.4小结 458
27.3 Mapper 458
27.3.1介绍 458
27.3.2 Data Mapper 461
27.3.3小结 466
27.4 Registry 467
27.4.1小结 471
27.5 Value Object 471
27.6通用数据载体DataSet和DataTable 473
27.7 Context 474
第28章GOF总结以及应用案例(Show Case)
28.1 GOF总结 476
28.1.1回顾GOF 476
28.2应用案例需求说明 476
28.3发现和分析 477
28.4模式应用 480
28.4.1已经采用的模式 480
28.4.2如何实现具体数据源无关 480
28.4.3提供执行前后定制处理的能力 492
28.4.4设计一个结构更加灵活的连接串配置访问机制 494
28.5小结 500
Section VI
Section VI:部分架构模式 501
第29章MVC模式(MVC)
29.1模式介绍 502
29.2示例 504
29.2.1 M/V/C未分解的示例 504
29.2.2分解M/V/C后的示例 506
29.2.3主动方式M/V/C 509
29.3小结 512
第30章 管道——过滤器模式(Pipeline-Filter)
30.1介绍 515
30.1.1方式1:推方式(Push) 516
30.1.2方式2:拉方式(Pull) 517
30.1.3方式3:推拉混合方式 518
30.1.4方式4:衔接方式 519
30.2示例 520
30.2.1推方式示例 520
30.2.2增加主动方式的Filter 525
30.3小结 527
第31章 出版—预定模式(Pub-Sub)
31.1模式介绍 529
31.1.1面向单一主题的本地观察者模式 530
31.1.2增加Proxy实现面向单一主题的分布式观察者模式 530
31.1.3用出版者集中管理预定 531
31.1.4面向物理环境设计更多出版预定模式 534
31.2示例 535
31.2.1数据实体模型部分 536
31.2.2业务实体模型部分 539
31.2.3具体实体对象部分 542
31.2.4单元测试 546
31.3小结 548
第32章Broker模式(Broker)
32.1模式介绍 551
32.2示例 554
32.3小结 557
第33章 消息总线模式(Message Bus)
33.1模式介绍 561
33.1.1分隔区域条件下的消息总线 563
33.2小结 564
Section VII
Section VII:部分Web和Web Service模式 565
第34章 页面控制器模式(Page Controller)
34.1介绍 567
34.2示例 567
34.3小结 567
第35章 实现Web服务依赖倒置
35.1 Web Service的模式化特征: 569
35.2 第一层的包装 570
35.3 SOA环境下典型的Web Service开发方式: 573
35.4依赖倒置原则及其Web Service中的应用 573
35.4.1分析 575
35.4.2实现示例 576
35.5 基于WCF的工程化实现 583
35.5.1实现示例 583
35.5.2借助WCF扩展服务的对象化特征 587
35.6 小结 588
第36章Web服务适配器模式(Web Service Adapter)
36.1介绍 560
36.1.1常规情景分析 560
36.1.2连续适配 560
36.1.3实施方式 562
36.2采用标准Web Service类型的示例 563
36.2.1单纯数据XSD适配: 563
36.2.2服务方法兼容性适配: 569
36.2.3其它说明: 571
36.3采用WCF的示例 572
36.3.1用Data Contract定义数据Schema 573
36.3.2定义不同的类型转换方式示例 574
36.4小结 576
第37章Web服务数据传输对象模式(Web Service DTO)
37.1介绍 579
37.1.1 DTO对象 579
37.1.2 DTO与消费者服务的对应关系 579
37.1.3部署设计考虑 581
37.1.4结构 581
37.2示例 582
37.2.1没有DTO对象的情况 583
37.2.2增加DTO对象的情况 585
37.3小结 587
37.4附件: 587
37.4.1实现DTO数据装载的2种方式 587
第38章Web服务事件监控器模式(Web Service Event Monitor)
38.1介绍 590
38.2示例 591
38.3小结 596
第39章Web服务拦截过滤器模式(Web Service Intercepting Filter)
39.1介绍 599
39.1.1实现方式 599
39.1.2 NET平台的实现技术 602
39.2示例 604
39.2.1基于ASP.NET Web Service的IHttpModule方式 604
39.2.2基于WCF自定义拦截方式 606
39.3小结 610
第40章 面向关系数据和XML数据的领域逻辑模式(Domain Logic Pattern)
40.1介绍 612
40.1.1整体逻辑结构 612
40.1.2性能改进 613
40.1.3面向关系数据库的业务服务设计 614
40.1.4面向XML数据的扩展设计 615
40.1.5配置机制设计 615
40.2示例 616
40.2.1示例情景 616
40.2.2测试内容准备 617
40.2.3实际测试过程 618
40.3小结 619
第41章 基于XML的应用建模(XML Based Application Model)
41.1介绍 621
41.1.1更具扩展性的数据模型——XML 621
41.1.2让非结构化数据可以被识别 626
41.1.3应对数据和内容的集成 628
41.1.4新的应用扩展: 630
41.1.5应对语义网络的复杂性 633
41.2小结 634
昨天怪怪同学、李会军同学、王涛同学还给了很多建议,对于俺从技术或读者的角度改进这本书有很大的启发和帮助,我正在修改。
Section I
Section I:准备内容 1
发掘C#语言面向对象化设计的潜力 1
第2章 C#面向对象化开发扩展
2.1 C# 部分语法内容扩展
2.1.1命名空间(Namespace) 2
2.1.1.1 Why和尴尬的现状 2
2.1.1.2 关于Namespace的示例 3
2.1.1.3 小结 4
2.1.2 委托(Delegate) 4
2.1.2.1 用Delegate完成异步调用 4
2. 1.2.2 1对n的通知 5
2. 1.2.3 调用匿名方法 7
2. 1.2.4 调用重载方法 8
2. 1.2.5 小结 10
2.1.3 泛型(Generics) 10
2. 1.3.1 抽象 10
2. 1.3.2 应用于模式 11
2. 1.3.3容器 14
2. 1.3.4类型参数约束 14
2. 1.3.5 小结 16
2.1.4 属性(Attribute) 16
2. 1.4.1 用Attribute指导模式 16
2. 1.4.2 进一步方便客户程序调用 19
2. 1.4.3 小结 20
2.1.5 索引器(Indexer) 20
2. 1.5.1 服务于集合 20
2. 1.5.2 封装单列集合的访问 21
2. 1.5.3 多列的集合 23
2. 1.5.4实现类似RDBMS中联合主键或唯一性索引的访问 24
2. 1.5.5通过委托传递索引规则 24
2. 1.5.6 小结 25
2.1.6 迭代器(Iterator) 25
2. 1.6.1 基本应用 26
2. 1.6.2 简化复杂结构的遍历 27
2. 1.6.3 小结 31
2.2 可重载运算符(Overloadable Operators)与转换运算符(Conversion Operators) 32
2.2.1 The Day After Someday 32
2.2.2 用于有限的状态迭代 33
2.2.3 操作集合 33
2.2.4类型的适配 35
2.2.5小结 36
2.3 对象化配置访问(Configuration) 36
2.3.1 认识.Net Framework提供的主要配置实体类 37
2.3.2 应用实例 38
2.3.3小结 46
2.4 实现依赖注入 46
2.4.1 背景介绍 46
2.4.2 示例情景 47
2.4.3 Constructor注入 49
2.4.4 Setter注入 50
2.4.5 接口注入 51
2.4.6 基于Attribute实现注入——Attributer 52
2.4.7 小结 53
第3章 开始每个设计模式之前
3.1 new()的替代品 55
3.2 准备一个轻量的内存Cache 57
3.3 准备一个集中访问配置文件的Broker 60
3.4 Web? Not Web? 63
3.5 小结 75
Section II
Section II:创建型模式 76
第4章 工厂 & 工厂方法模式(Factory & Factory Method)
4.1 简单工厂: 77
4.1.1 最简单的工厂类 77
4.1.2 参数化工厂 81
4.1.3 简单工厂局限性 81
4.2 意图、动机、适用性、参与者、结构和示例 81
4.3 解耦Concrete Factory与客户程序 83
4.4 基于配置文件的Factory 84
4.5 批量对象Factory 87
4.5.1 开发情景 87
4.5.2定义产品类型容器 88
4.5.3 定义具有批量任务特征的批量工厂和产品类型容器 89
4.5.4定义Director 90
4.5.5设计由Director指导生产的客户程序,并进行测试 91
4.6 基于类型参数的Generic Factory 93
4.7 Delegate Factory 95
4.8 小结 96
第5章 单件模式(Singleton)
5.1 意图、动机、适用性、参与者、结构和示例 99
5.2 线程安全的Singleton 102
5.3 防止那些不显而易见的破坏因素 104
5.4 细颗粒度Singleton 105
5.4.1背景讨论 105
5.4.2解决Windows Form下的细颗粒度Singleton问题 105
5.4.3解决Web Form下的细颗粒度Singleton问题 107
5.4.4更通用的细颗粒度Singleton 109
5.5 自动更新的Singleton 120
5.6 参数化Singleton 121
5.7 跨进程Singleton 126
5.8 Singleton的扩展——Singleton-N 127
5.8.1定义具有执行状态的抽象对象 128
5.8.2定义相应的Singleton-N实例集合 129
5.8.3在基本Singleton模式实现的框架下引入实例集合 130
5.9 基于配置的Singleton 131
5.10 基于类型参数的Generic Singleton 132
5.11 生成Singleton对象的Factory 141
5.12 小结 141
第6章 抽象工厂模式(Abstract Factory)
说明 143
6.1 意图、动机、适用性、参与者、结构和示例 143
6.2 具有Type Mapper的Abstact Factory 146
6.2.1 通过Type Mapper实现通用AbstractFactory类型 146
6.2.2 经典抽象工厂模式“硬伤”的处理 147
6.3 Type Mapper / Abstract Factory 148
6.3.1 分析 148
6.3.2 构造TypeMapper、TypeMapperDictionary 150
6.3.3 定义具有TypeMapper属性的抽象工厂 150
6.3.4 定义实体TypeMapper和实体工厂 151
6.3.5 定义AssemblyMechanism 151
6.5 基于配置的Abstract Factory 152
6.6 基于Delegate的异步Factory 155
6.7 小结 157
第7章 创建者模式(Builder_Obsoleted)
7.1 意图、动机、适用性、参与者、结构和示例 160
7.2 异步调用的BuildUp() 162
7.3 基于Attribute的Builder 165
7.3.1 分析 165
7.3.1.1 工具类型设计 165
7.3.1.2定义用于指导BuildPart过程的属性 166
7.3.1.3定义具有BuildPart自动发现机制的动态Builder 167
7.4 具有BuildUp()和TearDown()能力的动态Builder 169
7.5 基于配置的Builder 171
7.5.1 分析 171
7.5.1.1用UML设计抽象类型并表示为XSD 173
7.5.1.2删除XSD中不经常变化的内容 173
7.5.1.3 映射为配置节或配置元素 174
7.5.1.4 实现配置实体对象 175
7.5.1.5实现基于配置的创建者 179
7.6 用Iterator控制BuildUp()和TearDown()次序 180
7.7 小结 182
7.7.1基于类型参数的Generic Builder 183
7.7.2分析 183
7.7.3重新定义抽象产品类型和抽象创建者 184
第8章 原型模式(Prototype)
8.1意图、动机、适用性、参与者、结构和示例 186
8.2浅表复制和深层复制 190
8.2.1概念 190
8.2.2完成工具类SerializationHelper 191
8.2.3用NonSerializedAttribute影响序列化 193
8.2.4用ISerializable定制复制过程 194
8.3重新定义原型方法 196
8.4同时支持和序列化的泛型集合类型处理……………………………………………..197
8.5小结 197
Section III
Section III:结构型模式 198
第9章 适配器模式(Adapter)
9.1意图、动机、适用性、参与者、结构和示例 199
9.2 1:N的组适配器 202
9.3 Adapter——Adapter互联模式 205
9.3.1分析 205
9.3.2方式一:客户程序直接调度Adapter 207
9.3.3方式二:借助Endpoint实现同步调用 207
9.3.4方式三:借助反射和Endpoint实现异步调用 208
9.4基于配置的Adapter 209
9.5 XML数据的适配过程 210
9.6小结 212
第10章 桥模式(Bridge)
10.1意图、动机、适用性、参与者、结构和示例 215
10.2多级Bridge 218
10.3基于配置的Bridge 221
10.4具有上下文内容的Bridge 223
10.5小结 225
第11章 组合模式(Composite)
11.1意图、动机、适用性、参与者、结构和示例 228
11.2用迭代器遍历组合类型 232
11.3服务于XML对象的组合模式 234
11.4小结 237
第12章 装饰模式(Decorator)
12.1意图、动机、适用性、参与者、结构和示例 239
12.2对Decorator进行动态更新 243
12.2.1分析 243
12.2.2重新定义IDecorator 244
12.2.3定义具体的IState类型 245
12.2.4根据IState修改每个Decorator类型 246
12.2.5验证“动态”修改Decorator的能力 247
12.3设计Decorator与Builder协作的产物 248
12.4用Attribute把Decorator做成标签 250
12.4.1对更为“彻底”的Attribute注入方式的考虑 250
12.4.2方式1:采用.NET平台自带的AOP机制实现 251
12.4.3方式2:自定义代理拦截框架方式 254
12.4.4进一步分析 257
12.5小结 257
第13章 外观模式(Façade)
13.1意图、动机、适用性、参与者、结构和示例 259
13.2 Façade接口 262
13.3 Remote Façade 263
13.4面向性能考虑的升级版Remote Façade——Data Transfer Object模式 266
13.5平台、开发语言无关的抽象Façade接口——WSDL 270
13.6面向使用者考虑的Fluent Interface设计 270
13.7小结 272
第14章 享元模式(Flyweight)
14.1意图、动机、适用性、参与者、结构和示例 275
14.2基于配置的Flyweight 277
14.3综合类型系统的Flyweight——Object Pool 278
14.3.1对象池的应用背景 279
14.3.2总体技术结构 279
14.3.3抽象类型类型实体设计 280
14.3.4用经典的享元模式实现对象缓冲 280
14.3.5示例 281
14.4线程级Flyweight 284
14.5通过Delegate和队列实现异步Flyweight 285
14.6小结 286
第15章 代理模式(Proxy)
15.1意图、动机、适用性、参与者、结构和示例 288
15.2远程访问代理 290
15.2.1第一步、定义远程访问的服务协议 291
15.2.2第二步、定义服务端的配置文件及相应的宿主程序 291
15.2.3第三步、生成客户端远程代理(Proxy)类型 292
15.2.4第四步、编写客户端程序 293
15.3数据访问代理 294
15.4对象缓存代理 296
15.5通过IList<Delegate>实现Proxy的PreProcess和PostProcess 298
15.5.1第一步、定义外部处理机制的抽象结构 299
15.5.2第二步、定义新增处理的配置信息 300
15.5.3第三步、定义配置解析对象 301
15.5.4第四步、修正服务端和代理类的处理过程 302
15.6小结 302
Section IV
Section IV:行为型模式 301
第16章 职责链模式(Chain of Responsibility)
16.1意图、动机、适用性、参与者、结构和示例 304
16.2具有断点的Chain of Responsibility 308
16.3更多分支的链式操作 310
16.4基于配置的动态Chain of Responsibility 313
16.5小结 316
第17章 模版方法模式(Template Method)
17.1意图、动机、适用性、参与者、结构和示例 318
17.2多Template Method 320
17.3基于Delegate的方法Template Method 324
17.4基于Generic的类型Template Method 325
17.5基于配置的动态Template Method 326
17.6小结 327
第18章 解释器模式(Interpreter)
18.1意图、动机、适用性、参与者、结构和示例 330
18.2基于正则表达式的Interpreter 333
18.3基于字典信息的Interpreter 337
18.4 Abstract Interpreter 342
18.5用XSD定制业务语义的Interpreter 343
18.6小结 344
第19章 命令模式(Command)
19.1意图、动机、适用性、参与者、结构和示例 347
19.2用Delegate实现轻量级的Command 350
19.3异步Command机制 352
19.4复合Command 356
19.4.1借助外观模式实现简单封装的复合Command 357
19.4.2借助组合模式实现复合Command 359
19.5 Queued Command 361
19.6小结 362
第20章 迭代器模式(Iterator)
20.1意图、动机、适用性、参与者、结构和示例 365
20.2 C#化的Iterator 367
20.3小结 369
第21章 中介者模式(Mediator)
21.1中介者模式意图、动机、适用性、参与者、结构和示例 373
21.2基于Delegate和事件的松耦合Mediator 378
21.3基于配置的动态Mediator 380
21.4基于SOAP调用的Mediator 382
21.5小结 383
第22章 备忘录模式(Memento)
22.1意图、动机、适用性、参与者、结构和示例 386
22.2栈式备忘录模式 391
22.3 Memento的序列化和持久化 394
22.4小结 397
第23章 观察者模式(Observer)
23.1意图、动机、适用性、参与者、结构和示例 402
23.2 NET内置的Observer机制——事件 406
23.3具有Observer的集合类型 408
23.4面向服务接口的Observer 410
23.5小结 413
第24章 状态模式(State)
24.1意图、动机、适用性、参与者、结构和示例 416
24.2 State的序列化和持久化 420
24.3主动方式State 423
24.4基于Delegate和事件的触发式State 423
24.5涉及用户交互的State 426
24.6用WF完成更易于编排的State 426
24.7小结 428
第25章 策略模式(Strategy)
25.1意图、动机、适用性、参与者、结构和示例 431
25.2 Strategy与Interpreter协作 433
25.3充分利用.NET Framework自带的Strategy接口 434
25.4通过Delegate实现动态Strategy 437
25.5小结 438
第26章 访问者模式(Visitor)
26.1意图、动机、适用性、参与者、结构和示例 440
26.2借助Reflection实现Visitor 445
26.3基于Delegate和事件的松耦合Visitor 447
26.4小结 447
Section V
Section V:小颗粒度基础模式和应用案例 448
第27章 成例(Idioms)
27.1 Partial Class 449
27.1.1组合 449
27.1.2多个侧面 450
27.1.3与Visual Studio Add-ins的结合 452
27.1.4小结 452
27.2 Gateway 452
27.2.1封装本地API的Gateway 453
27.2.2 Gateway封装非C#语言访问接口 455
27.2.3 Gateway封装通用操作方法 455
27.2.4小结 458
27.3 Mapper 458
27.3.1介绍 458
27.3.2 Data Mapper 461
27.3.3小结 466
27.4 Registry 467
27.4.1小结 471
27.5 Value Object 471
27.6通用数据载体DataSet和DataTable 473
27.7 Context 474
第28章GOF总结以及应用案例(Show Case)
28.1 GOF总结 476
28.1.1回顾GOF 476
28.2应用案例需求说明 476
28.3发现和分析 477
28.4模式应用 480
28.4.1已经采用的模式 480
28.4.2如何实现具体数据源无关 480
28.4.3提供执行前后定制处理的能力 492
28.4.4设计一个结构更加灵活的连接串配置访问机制 494
28.5小结 500
Section VI
Section VI:部分架构模式 501
第29章MVC模式(MVC)
29.1模式介绍 502
29.2示例 504
29.2.1 M/V/C未分解的示例 504
29.2.2分解M/V/C后的示例 506
29.2.3主动方式M/V/C 509
29.3小结 512
第30章 管道——过滤器模式(Pipeline-Filter)
30.1介绍 515
30.1.1方式1:推方式(Push) 516
30.1.2方式2:拉方式(Pull) 517
30.1.3方式3:推拉混合方式 518
30.1.4方式4:衔接方式 519
30.2示例 520
30.2.1推方式示例 520
30.2.2增加主动方式的Filter 525
30.3小结 527
第31章 出版—预定模式(Pub-Sub)
31.1模式介绍 529
31.1.1面向单一主题的本地观察者模式 530
31.1.2增加Proxy实现面向单一主题的分布式观察者模式 530
31.1.3用出版者集中管理预定 531
31.1.4面向物理环境设计更多出版预定模式 534
31.2示例 535
31.2.1数据实体模型部分 536
31.2.2业务实体模型部分 539
31.2.3具体实体对象部分 542
31.2.4单元测试 546
31.3小结 548
第32章Broker模式(Broker)
32.1模式介绍 551
32.2示例 554
32.3小结 557
第33章 消息总线模式(Message Bus)
33.1模式介绍 561
33.1.1分隔区域条件下的消息总线 563
33.2小结 564
Section VII
Section VII:部分Web和Web Service模式 565
第34章 页面控制器模式(Page Controller)
34.1介绍 567
34.2示例 567
34.3小结 567
第35章 实现Web服务依赖倒置
35.1 Web Service的模式化特征: 569
35.2 第一层的包装 570
35.3 SOA环境下典型的Web Service开发方式: 573
35.4依赖倒置原则及其Web Service中的应用 573
35.4.1分析 575
35.4.2实现示例 576
35.5 基于WCF的工程化实现 583
35.5.1实现示例 583
35.5.2借助WCF扩展服务的对象化特征 587
35.6 小结 588
第36章Web服务适配器模式(Web Service Adapter)
36.1介绍 560
36.1.1常规情景分析 560
36.1.2连续适配 560
36.1.3实施方式 562
36.2采用标准Web Service类型的示例 563
36.2.1单纯数据XSD适配: 563
36.2.2服务方法兼容性适配: 569
36.2.3其它说明: 571
36.3采用WCF的示例 572
36.3.1用Data Contract定义数据Schema 573
36.3.2定义不同的类型转换方式示例 574
36.4小结 576
第37章Web服务数据传输对象模式(Web Service DTO)
37.1介绍 579
37.1.1 DTO对象 579
37.1.2 DTO与消费者服务的对应关系 579
37.1.3部署设计考虑 581
37.1.4结构 581
37.2示例 582
37.2.1没有DTO对象的情况 583
37.2.2增加DTO对象的情况 585
37.3小结 587
37.4附件: 587
37.4.1实现DTO数据装载的2种方式 587
第38章Web服务事件监控器模式(Web Service Event Monitor)
38.1介绍 590
38.2示例 591
38.3小结 596
第39章Web服务拦截过滤器模式(Web Service Intercepting Filter)
39.1介绍 599
39.1.1实现方式 599
39.1.2 NET平台的实现技术 602
39.2示例 604
39.2.1基于ASP.NET Web Service的IHttpModule方式 604
39.2.2基于WCF自定义拦截方式 606
39.3小结 610
第40章 面向关系数据和XML数据的领域逻辑模式(Domain Logic Pattern)
40.1介绍 612
40.1.1整体逻辑结构 612
40.1.2性能改进 613
40.1.3面向关系数据库的业务服务设计 614
40.1.4面向XML数据的扩展设计 615
40.1.5配置机制设计 615
40.2示例 616
40.2.1示例情景 616
40.2.2测试内容准备 617
40.2.3实际测试过程 618
40.3小结 619
第41章 基于XML的应用建模(XML Based Application Model)
41.1介绍 621
41.1.1更具扩展性的数据模型——XML 621
41.1.2让非结构化数据可以被识别 626
41.1.3应对数据和内容的集成 628
41.1.4新的应用扩展: 630
41.1.5应对语义网络的复杂性 633
41.2小结 634
贸易电子化,技术全球化