《设计模式:基于C的工程化实现及扩展》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:王翔著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121075070
  • 页数:652 页
图书介绍:本书主要是基于C# 2.0的语法,试图将GOF 23中的模式以一种可工程化公共库而非Example的方式呈现给读者。内容从以下7部分展开进行叙述:第1部分主要是对本书进行一些概括性介绍;第2部分创建型模式为了隔离客户程序与具体类型实例化的依赖关系,通过将实例化职责委托它方对象的办法,保证客户程序(或外部系统)获得期望具体类型实例的同时不必发生直接的引用;第3部分结构型模式的重点在于如何通过灵活的体系组织不同的对象,并在此基础上完成更为复杂的类型(或者类型系统),而参与组合的各类型之间始终保持尽量松散的结构关系;第4部分行为型模式关注于应用运行过程中算法的提供和通信关系的梳理;第5部分主要介绍小颗粒度基础模式和应用案例;第6部分主要涉及应用全局的模式化的实现方法,对于现在已经被普遍应用的N层模式及某些关键性框架产品采用的“微内核”模式;第7部分主要是一些针对Web和Web Service模式领域的模式设计技术。本书主要针对C#语言和.NET Framework平台有一定了解或者应用经验的用户,尤其适于那些希望基于模式技术在设计和开发方面多应对些挑战的用户。

导读 1

第1篇 预备知识—发掘用C#语言进行面向对象化设计的潜力 1

第1章 重新研读C#语言 3

1.1 说明 4

1.2 C#部分语法内容扩展 4

1.2.1 命名空间(Namespace) 4

1.2.2 简洁的异步通知机制—委托(Delegate) 6

1.2.3 考验你的算法抽象能力—泛型(Generics) 12

1.2.4 用作标签的方式扩展对象特性—属性(Attribute) 18

1.2.5 用索引器简化的C#类型信息访问 22

1.2.6 融入C#语言的迭代机制—迭代器(Iterator) 29

1.3 可重载运算符(Overloadable Operators)与转换运算符(Conversion Operators) 35

1.3.1 The Day After Someday 35

1.3.2 用于有限的状态迭代 35

1.3.3 操作集合 36

1.3.4 类型的适配 37

1.3.5 小结 38

1.4 面向插件架构和现场部署的配置系统设计 39

1.4.1 认识.NET Framework提供的主要配置实体类 40

1.4.2 应用实例 41

1.4.3 小结 48

1.5 实现依赖注入 48

1.5.1 背景介绍 48

1.5.2 示例情景 48

1.5.3 Constructor注入 51

1.5.4 Setter注入 51

1.5.5 接口注入 52

1.5.6 基于Attribute实现注入—Attributer 53

1.5.7 小结 55

第2章 开始每个设计模式之前 57

2.1 new()的替代品 59

2.2 准备一个轻量的内存Cache 61

2.3 准备一个集中访问配置文件的Broker 64

2.4 Web?Not Web? 67

2.5 小结 71

第2篇 创建型模式—管理并隔离对象—的构造过程 73

第3章 工厂&工厂方法模式 75

3.1 简单工厂 76

3.1.1 最简单的工厂类 76

3.1.2 根据规格加工产品—参数化工厂 79

3.1.3 简单工厂的局限性 80

3.2 经典回顾 80

3.3 解耦Concrete Factory与客户程序 82

3.4 基于配置文件的Factory 83

3.5 批量工厂 85

3.5.1 开发情景 85

3.5.2 定义产品类型容器 87

3.5.3 定义批量工厂和产品类型容器 88

3.5.4 增设生产指导顾问—Director 89

3.5.5 由Director指导的客户程序 90

3.6 基于类型参数的Generic Facto 91

3.7 委托工厂类型 94

3.8 小结 95

第4章 单件模式 97

4.1 经典回顾 99

4.2 线程安全的Singleton 102

4.3 细节决定成败 103

4.4 细颗粒度Singleton 105

4.4.1 背景讨论 105

4.4.2 解决桌面应用中细颗粒度Singleton问题 105

4.4.3 解决Web应用中细颗粒度Singleton问题 107

4.4.4 更通用的细颗粒度Singleton 108

4.5 自动更新的Singleton 110

4.6 参数化的Singleton 110

4.7 跨进程的Singleton 112

4.8 Singleton的扩展—Singleton-N 114

4.8.1 定义具有执行状态的抽象对象 115

4.8.2 定义相应的Singleton-N实例集合 115

4.8.3 在基本Singleton模式实现的框架下引入实例集合 116

4.9 引入配置文件管理Singleton 117

4.10 基于类型参数的Generic Singleton 118

4.11 由工厂类型协助Singleton实例管理 119

4.12 小结 120

第5章 抽象工厂模式 121

5.1 经典回顾 122

5.2 按计划实施生产 125

5.2.1 为抽象工厂补充类型映射器 125

5.2.2 处理模式的硬伤 127

5.3 定义计划与生产间的映射关系 128

5.3.1 分析 128

5.3.2 登记映射关系 129

5.3.3 用TypeMapper协助工厂生产 129

5.3.4 定义实体TypeMapper和实体工厂 130

5.3.5 实现装配机制 130

5.4 配置生产计划 131

5.5 基于Delegate的生产外包 134

5.6 小结 136

第6章 创建者模式 139

6.1 经典回顾 141

6.2 异步调用的BuildUp() 143

6.3 为Builder打个标签 146

6.3.1 完成工具类 146

6.4 具有装配/卸裁能力的Builder 150

6.5 看着图纸加工—登记配置文件 152

6.5.1 把UML的对象变成XSD 152

6.5.2 把握梗概—删除不经常变化的内容 154

6.5.3 映射为配置节点或配置元素 155

6.5.4 实现实体对象 155

6.5.5 完成流水线生产 158

6.6 用迭代器控制流水线 159

6.7 小结 161

第7章 原型模式 163

7.1 经典回顾 164

7.2 表面模仿还是深入模仿 168

7.2.1 概念 168

7.2.2 制作实现克隆的工具类型 169

7.2.3 克隆也要稍微保留点个性 171

7.2.4 定制并管理的克隆过程 172

7.3 重新定义原型方法 173

7.4 同时支持XML和二进制序列化的泛型集合类型处理 174

7.5 小结 179

第3篇 结构型模式—针对组织灵活的对象体系 181

第8章 适配器模式 183

8.1 说明 184

8.2 经典回顾 185

8.3 进—步扩展适配范围的组适配器 187

8.4 Adapter—Adapter互联模式 190

8.4.1 分析 190

8.4.2 方式1:客户程序直接调度Adapter 192

8.4.3 方式2:基于标准约定调度Adapter 192

8.4.4 方式3:借助反射和约定完成异步调用 193

8.5 用配置约定适配过程 194

8.6 XML数据的专用适配机制 196

8.7 小结 198

第9章 桥模式 199

9.1 说明 200

9.2 经典回顾 201

9.3 将复杂性进一步分解后的多级桥关系 204

9.4 看着“图纸”造桥 207

9.5 具有约束关系的桥 209

9.6 小结 211

第10 章组合模式 213

10.1 说明 214

10.2 经典回顾 215

10.3 用迭代器遍历组合类型 218

10.4 适于XML信息的组合模式 220

10.5 小结 223

第11章 装饰模式 225

11.1 说明 226

11.2 经典回顾 226

11.3 具有自我更新特征的装饰模式 230

11.3.1 分析 230

11.3.2 抽象装饰接口 231

11.3.3 抽象状态接口 232

11.3.4 依据当前状态修改装饰 233

11.3.5 测试验证 233

11.4 设计Decorator与Builder协作的产物 234

11.5 把Decorator做成标签 236

11.5.1 更“彻底”的Attribute注入 236

11.5.2 方式1:采用.NET平台自带的AOP机制实现 237

11.5.3 方式2:自定义代理拦截框架方式 239

11.5.4 进—步分析 242

11.6 小结 243

第12章 外观模式 245

12.1 说明 246

12.2 经典回顾 246

12.3 Facade接口 249

12.4 Remote Facade 250

12.5 面向性能考虑的升级版Remote Facade—Data Transfer Object模式 253

12.6 平台、开发语言无关的抽象Facade接口—WSDL 256

12.7 让使用者更加方便的Fluent Interface设计 257

12.8 小结 258

第13章 享元模式 259

13.1 说明 260

13.2 经典回顾 261

13.3 制订共享计划 263

13.4 综合性的共享体系—Object Pool 264

13.4.1 应用背景 264

13.4.2 总体技术结构 264

13.4.3 抽象类型实体设计 265

13.4.4 享元模式的典型应用—缓冲 266

13.4.5 示例 266

13.5 用于并行处理的线程级享元 269

13.6 通过Delegate和队列实现异步Flyweight 270

13.7 小结 271

第14章 代理模式 273

14.1 说明 274

14.2 经典回顾 274

14.3 远程访问代理 276

14.3.1 第1步:定义远程访问的服务协议 277

14.3.2 第2步:定义服务端的配置文件及相应的宿主程序 277

14.3.3 第3步:生成客户端远程代理(Proxy)类型 278

14.3.4 第4步:编写客户端程序 279

14.4 数据访问代理 279

14.5 对象缓存代理 282

14.6 为代理过程增加预处理和后续处理的支持 284

14.6.1 第1步:定义外部处理机制的抽象结构 285

14.6.2 第2步:定义新增处理的配置信息 286

14.6.3 第3步:定义配置解析对象 286

14.6.4 第4步:修正服务端和代理类的处理过程 287

14.7 小结 288

第4篇 行为型模式—算法、控制流和通信关系的对象化处理 289

第15章 职责链模式 291

15.1 说明 292

15.2 经典回顾 292

15.3 用断点控制链式过程 295

15.4 链式反应 298

15.5 增加配置约束 300

15.6 小结 303

第16章 模板方法模式 305

16.1 说明 306

16.2 经典回顾 306

16.3 满足多套模板要求 308

16.4 方法的模板—Delegate 311

16.5 类型的模板—Genec 312

16.6 用配置勾勒的模板 313

16.7 小结 314

第17章 解释器模式 315

17.1 说明 316

17.2 经典回顾 317

17.3 采用正则表达式 320

17.4 采用字典 324

17.5 采用XSD 328

17.6 用XSD解释定制的业务语言 329

17.7 小结 330

第18章 命令模式 331

18.1 说明 332

18.2 经典回顾 333

18.3 轻量级的Command—委托 336

18.4 异步Command 337

18.5 把Command打包 341

18.5.1 外观模式方式 342

18.5.2 组合模式方式 343

18.6 把Command排队 345

18.7 小结 347

第19章 迭代器模式 349

19.1 说明 350

19.2 经典回顾 351

19.3 C#化的Iterator 353

19.4 小结 354

第20章 中介者模式 355

20.1 说明 356

20.2 经典回顾 358

20.3 基于Delegate和事件的松耦合Mediator 362

20.4 根据配置动态协调通知关系 365

20.5 SOAP Mediator 366

20.6 小结 367

第21章 备忘录模式 369

21.1 说明 370

21.2 经典回顾 371

21.3 把备忘压栈 376

21.4 Memento 的序列化和持久化 378

21.5 小结 381

第22章 观察者模式 383

22.1 说明 384

22.2 经典回顾 386

22.3 .NET 内置的 Observer机制—事件 391

22.4 具有Observer的集合类型 392

22.5 面向服务接口的 Observer 394

22.6 小结 397

第23章 状态模式 399

23.1 说明 400

23.2 经典回顾 401

23.3 State的序列化和持久化 405

23.4 主动方式State 407

23.5 触发式State 408

23.6 涉及用户交互的状态流转 410

23.7 用WF完成更易于编排的State 410

23.8 小结 412

第24章 策略模式 413

24.1 说明 414

24.2 经典回顾 415

24.3 Strategy与Interpreter协作 417

24.4 充分利用.NET Framework自带的Strategy接口 418

24.5 动态策略 421

24.6 小结 422

第25章 访问者模式 423

25.1 说明 424

25.2 经典回顾 424

25.3 借助反射实现Visitor 428

25.4 用委托使引用关系更加松散 430

25.5 小结 430

第5篇 小颗粒度基础模式和应用案例—服务于细节的基础性模式 431

第26章 成例 433

26.1 说明 434

26.2 PartialClass 434

26.2.1 体现组合关系 434

26.2.2 从多个侧面刻画类型 435

26.2.3 与Visual Studio Add-ins的结合 436

26.2.4 小结 437

26.3 Gateway 437

26.3.1 封装本地API的Gateway 438

26.3.2 封装非C#语言访问接口 440

26.3.3 封装通用操作方法 440

26.3.4 小结 443

26.4 Mapper 443

26.4.1 介绍 443

26.4.2 数据对象映射器 445

26.4.3 小结 450

26.5 Regist 451

26.6 ValueObject 455

26.7 通用数据载体DataSet和DataTable 457

26.8 Context 458

第27章 GOF总结及应用案例 461

27.1 GOF总结 462

27.1.1 回顾GOF 462

27.2 应用案例需求说明 462

27.3 发现和分析 463

27.4 模式应用 466

27.4.1 已经采用的模式 466

27.4.2 如何实现与具体数据源无关 466

27.4.3 提供执行前后定制处理的能力 476

27.4.4 设计一个结构更加灵活的连接串配置访问机制 477

27.5 小结 482

第6篇 部分架构模式—面向应用全局的模式化处理 483

第28章 MVC模式 485

28.1 说明 486

28.2 模式介绍 487

28.3 示例 489

28.3.1 混合方式 489

28.3.2 分解对象职责 490

28.3.3 主动方式M/V/C 492

28.4 小结 495

第29章 管道—过滤器模式 497

29.1 说明 498

29.2 登机的管道流程 499

29.2.1 数据源发起的推方式 500

29.2.2 数据接收方发起的拉方式 501

29.2.3 中介对象发起的推拉混合方式 502

29.2.4 数据源/数据接收方分别发起的衔接方式 503

29.3 示例 504

29.3.1 推方式示例 504

29.3.2 增加主动方式的Filter 508

29.4 小结 509

第30章 出版—预订模式 511

30.1 说明 512

30.2 生活中无处不在的“预订” 512

30.2.1 面向单一主题的本地观察者模式 512

30.2.2 增加Proxy实现面向单一主题的分布式观察者模式 513

30.2.3 用出版者集中管理预订 514

30.2.4 面向物理环境设计更多出版预订模式 517

30.3 示例 518

30.3.1 数据实体模型部分 518

30.3.2 业务实体模型部分 521

30.3.3 具体实体对象部分 523

30.3.4 单元测试 527

30.4 小结 528

第31章 Broker模式 531

31.1 说明 532

31.2 越来越庞杂的分布式系统交互之感 533

31.3 示例 536

31.4 小结 539

第32章 消息总线模式 541

32.1 说明 542

32.2 用总线梳理企业系统环境 544

32.2.1 分隔区域条件下的消息总线 547

32.3 小结 547

第7篇 部分Web和WebService模式—面向服务开发中的模式化处理 549

第33章 页面控制器模式 551

33.1 说明 552

33.2 用对象化思维抽象和扩展页面操作逻辑 553

33.3 示例 554

33.4 小结 555

第34章 实现Web服务依赖倒置 557

34.1 Web Service的模式化特征 558

34.2 第一层的包装 559

34.2.1 Aggregation 560

34.2.2 Contain 561

34.3 SOA环境下典型的WebService开发方式 561

34.4 依赖倒置原则及其在WebService中的应用 562

34.4.1 分析 564

34.4.2 实现示例 565

34.5 基于WCF的工程化实现 571

34.5.1 实现示例 571

34.5.2 借助WCF扩展服务的对象化特征 574

34.6 小结 576

第35章 Web服务适配器模式 577

35.1 说明 578

35.2 WebService下的接口适配问题 578

35.2.1 常规情景分析 578

35.2.2 WebService间连续交互适配 579

35.2.3 实施方式 580

35.3 采用标准Web Service类型的示例 581

35.3.1 单纯数据XSD适配 581

35.3.2 服务方法兼容性适配 586

35.3.3 其他说明 588

35.4 采用WCF的示例 588

35.4.1 用DataContract定义数据Schema 589

35.4.2 定义不同的类型转换方式示例 590

35.5 小结 592

第36章 Web服务数据传输对象模式 593

36.1 说明 594

36.2 Web Service接口批量交互中的性能问题 595

36.2.1 DTO对象 595

36.2.2 DTO与消费者服务的对应关系 595

36.2.3 部署设计考虑 597

36.2.4 结构 597

36.3 示例 598

36.3.1 没有DTO对象的情况 599

36.3.2 增加DTO对象的情况 601

36.4 小结 602

36.5 附件 603

36.5.1 实现DTO数据装载的两种方式 603

第37章 Web服务事件监控器模式 605

37.1 说明 606

37.2 如何为普通WebService封装事件机制 607

37.3 示例 609

37.4 小结 613

第38章 Web服务拦截过滤器模式 615

38.1 说明 616

38.2 通过拦截完成自定义特性的透明扩展 617

38.2.1 实现方式 617

38.2.2 .NET平台的实现技术 620

38.3 示例 621

38.3.1 基于ASP.NETWebService的IHttpModule方式 621

38.3.2 基于WCF自定义拦截方式 623

38.4 小结 626

附录A 面向关系数据和XML数据的领域逻辑模式 627

A.1 说明 628

A.2 实现业务领域逻辑的主要方法 628

A.2.1 整体逻辑结构 628

A.2.2 性能改进 629

A.2.3 面向关系数据库的业务服务设计 630

A.2.4 面向XML数据的扩展设计 630

A.2.5 配置机制设计 631

A.3 示例 632

A.3.1 示例情景 632

A.3.2 测试内容准备 633

A.3.3 实际测试过程 634

A.4 小结 635

附录B 基于XML的应用建模 637

B.1 说明 638

B.2 世界是平的,但更是多元的 638

B.2.1 更具扩展性的数据模型—XML 638

B.2.2 让非结构化数据可以被识别 642

B.2.3 应对数据和内容的集成 644

B.2.4 新的应用扩展 647

B.2.5 应对语义网络的复杂性 649

B.3 小结 650

索引 651