《设计模式——基于C#的工程化实现》想做到的

设计模式是套思想,不过我是一名从事编码的人员,有时候还经常觉得如何更巧的结合应用功能完成实现也要多多斟酌。

在我师傅、同事领导的帮助下,这几年做了一些.NET的项目,我酷爱C#语言,所以使用中发现C#实现一些设计模式的时候还有很多特色的内容,

因此,在博文周老师、陈编辑以及很多QQ群里朋友的支持下,我觉得可以把以前的一些心得总结出来,所以萌生了写本书的想法。

 

虽然这本书很多模式的扩展都很有限,但我希望可以做为一个引子,能够与喜欢 模式 & C#语言 的朋友有个讨论的基础,希望可以不断完善这部分内容。

 

设计模式——基于C#的工程化实现及扩展
第四版目录


第一篇:准备内容    1
发掘C#语言面向对象化设计的潜力    1
第2章  重新研读C#语言
2.1  C# 部分语法内容扩展
2.1.1命名空间(Namespace)
2.1.1.1  尴尬的现实状况2                                          
2.1.1.2 企业.NET类型系统的命名空间规划示例3
2.1.1.3 小结    4
2.1.2   简洁的异步通知机制——委托  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  考验你的算法抽象能力 ——泛型 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   用索引器简化的C#类型信息访问 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  融入C#语言的迭代机制——迭代器 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   面向插件架构和现场部署的配置系统设计
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


第二篇:创建型模式    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 批量工厂 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解决桌面应用中细颗粒度Singleton问题    105
5.4.3解决web应用中细颗粒度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实例管理141
5.12 小结    141
第6章  抽象工厂模式(Abstract Factory)
6.1经典回顾 143
6.2 按计划实施生产 146
6.2.1 为抽象工厂补充类型映射器 146
6.2.2 处理模式的硬伤 147
6.3 定义计划与生产间的映射关系 148
6.3.1 分析 148
6.3.2 登记映射关系
6.3.3 用TypeMapper协助工厂生产 150
6.3.4 定义实体TypeMapper和实体工厂 151
6.3.5 实现装配机制 151
6.4 配置生产计划 152
6.5 基于Delegate的生产外包 155
6.6小结 157
第7章 创建者模式 (Builder)
7.1经典回顾 160
7.2 异步调用的BuildUp() 162
7.3 为Builder打个标签 165

7.3.1完成工具类 165
7.3.2 定义标签 166
7.3.3 学会看标签 167
7.4 具有 装配/卸载 能力的Builder 169
7.5 看着图纸做加工——登记配置文件 171

7.5.1 把UML的对象变成XSD 173
7.5.2 把握梗概——删除不经常变化的内容 173
7.5.3映射为配置节或配置元素  174                 
7.5.4 实现实体对象 175
7.5.5完成流水线生产 179
7.6 用迭代器控制流水线 180
7.7小结 182
7.7.1基于类型参数的Generic Builder183
7.7.2分析 183
7.7.3流程优化重组 184
第8章  原型模式(Prototype)
8.1经典回顾 186
8.2表面模仿还是深入模仿 190    
8.2.1 概念 190
8.2.2 制作实现克隆的工具类型
8.2.3克隆也要稍微保留点个性 193
8.2.4 定制并管理的克隆过程 194
8.3重新定义原型方法    196
8.4 同时支持XML和二进制序列化的泛型集合类型处理
8.5小结


第三篇:结构型模式    198

第9章  适配器模式(Adapter)
9.1经典回顾199
9.2   进一步扩展适配范围的组适配器202
9.3 Adapter——Adapter互联模式   205
9.3.1分析    205
9.3.2方式1:客户程序调度Adapter    207
9.3.3方式2:  基于标准约定调度Adapter207
9.3.4方式3:  借助反射和约定完成异步调用 208
9.4  用配置约定适配过程 209
9.5   XML数据的专用适配机制 210
9.6小结    212
第10章 桥模式(Bridge)
10.1 经典回顾 215
10.2  将复杂性进一步分解后的多级桥关系218
10.3  看着“图纸”造桥221
10.4  具有约束关系的桥 223
10.5小结    225
第11章 组合模式(Composite)
11.1 经典回顾228
11.2用迭代器遍历组合类型    232
11.3   适于XML信息的组合模式234
11.4小结    237
第12章 装饰模式(Decorator)
12.1经典回顾
12.2具有自我更新特征的装饰模式
12.2.1分析 243
12.2.2抽象装饰接口
12.2.3抽象状态接口
12.2.4依据当前状态修改装饰
12.2.5测试验证
12.3设计Decorator与Builder协作的产物 248
12.4把Decorator做成标签
12.4.1 更“彻底”的Attribute注入
12.4.2方式1:采用.NET平台自带的AOP机制实现 251
12.4.3方式2:自定义代理拦截框架方式 254
12.4.4进一步分析 257
12.5小结 257
第13章 外观模式(Façade)
13.1.经典回顾
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 经典回顾
14.2 制订共享计划
14.3 综合性的共享体系——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 用于并行处理的线程级享元
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)类型    
15.2.4第四步 编写客户端程序    293
15.3数据访问代理    294
15.4对象缓存代理    296
15.5为代理过程增加预处理和后续处理的支持
15.5.1第一步、定义外部处理机制的抽象结构    299
15.5.2第二步、定义新增处理的配置信息    300
15.5.3第三步、定义配置解析对象    301
15.5.4第四步、修正服务端和代理类的处理过程    302
15.6小结    302


第四篇:行为型模式    301

第16章 职责链模式(Chain of Responsibility)
16.1.经典回顾
16.2 用断点控制链式过程
16.3 链式反应
16.4 增加配置约束
16.5 小结 316
第17章 模版方法模式(Template Method)
17.1经典回顾
17.2满足多套模版要求
17.3方法的模版——Delegate
17.4类型的模版——Generic
17.5 用配置勾勒的模版
17.6小结 327
第18章  解释器模式(Interpreter)
18.1经典回顾
18.2采用正则表达式
18.3采用字典
18.4 采用XSD
18.5用XSD解释订制的业务语言
18.6小结
第19章 命令模式(Command)
19.1经典回顾
19.2轻量级的Command——委托     
19.3异步Command
19.4 把Command打包
19.4.1 外观模式方式
19.4.2组合模式方式
19.5 把Command排队
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根据配置动态协调通知关系
21.4SOAP Mediator
21.5小结 383
第22章 备忘录模式(Memento)
22.1经典回顾
22.2 把备忘压栈
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触发式State     423
24.5涉及用户交互的状态流转    426
24.6用WF完成更易于编排的State    426
24.7小结    428
第25章 策略模式(Strategy)
25.1经典回顾
25.2 Strategy与Interpreter协作 433
25.3充分利用.NET Framework自带的Strategy接口 434
25.4 动态策略
25.5小结 438
第26章 访问者模式(Visitor)
26.1经典回顾
26.2借助反射实现Visitor 445
26.3用委托使引用关系更加松散
26.4小结 447


第五篇:小颗粒度基础模式和应用案例    448

第27章 成例(Idioms)
27.1 Partial Class 449
27.1.1 体现组合关系
27.1.2 从多个侧面刻画类型
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 封装非C#语言访问接口 455
27.2.3 封装通用操作方法 455
27.2.4小结 458
27.3 Mapper 458
27.3.1介绍 458
27.3.2 数据对象映射器
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


第六篇:部分架构模式    501

第29章MVC模式(MVC)
29.1模式介绍 502
29.2示例 504
29.2.1 混合方式
29.2.2分解对象职责
29.2.3主动方式M/V/C 509
29.3小结 512
第30章  管道——过滤器模式(Pipeline-Filter)
30.1 登机的管道流程    515
30.1.1 数据源发起的推方式
30.1.2 数据接收方发起的拉方式
30.1.3 中介对象发起的推拉混合方式 518
30.1.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


第七篇:部分Web和Web Service模式    565

第34章 页面控制器模式(Page Controller)
34.1 用对象化思维抽象和扩展页面操作逻辑
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.1Web Service下的接口适配问题  560
36.1.1常规情景分析    560
36.1.2Web Service间连续交互适配    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.1Web Service接口批量交互中的性能问题    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如何为普通Web Service封装事件机制   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

 

posted @ 2008-08-18 22:22  蜡笔小王  阅读(1750)  评论(10编辑  收藏  举报