第1篇 设计之要
第1章 设计之道
1.1 计划的设计与演进的设计
1.2 架构的标准
1.3 过度设计,还是简单设计
1.4 需要设计模式吗
1.5 重构是必然的
1.6 UML重要吗
1.7 测试驱动开发
第2章 对象法则
2.1 面向对象思想
2.2 面向对象核心要素
2.2.1 封装
2.2.2 继承
2.2.3 多态
2.3 面向对象设计原则
2.3.1 单一职责原则
2.3.2 开放封闭原则
2.3.3 Liskov替换原则
2.3.4 依赖倒置原则
2.3.5 接口隔离原则
第3章 封装变化
3.1 设计模式之鹄的
3.2 如何封装变化
3.2.1 封装对象行为的变化
3.2.2 封装对象创建的变化
3.2.3 封装对象结构的变化
3.3 解耦具体依赖
3.3.1 配置文件与反射技术
3.3.2 表驱动法
3.3.3 惯例优于配置
3.3.4 依赖注入
第4章 体验重构
4.1 一个阶乘容器
4.2 代码的坏味道
4.3 需求发生变化
4.4 运用重构利器
4.5 引入设计模式
第5章 测试驱动开发
5.1 发现价值与生产价值
5.2 运用面向对象编程思想
5.3 适时小结
5.4 收获价值
5.5 无上之力
第2篇 .NET框架与设计模式
第6章 .NET中的工厂方法模式
6.1 “嫁祸江东”之计
6.2 WebRequest对象的创建
6.3 改造工厂方法模式
6.4 实现良好的可扩展性
6.5 惯例优于配置
第7章 .NET中的合成模式
7.1 字处理软件
7.2 .NET框架中的控件
7.3 “复合方式”的合成模式
第8章 .NET中的装饰器模式
8.1 一步一步走向装饰器模式
8.2 .NET框架中对流的处理
第9章 .NET中的迭代器模式
9.1 分辨对象的职责
9.2 实现迭代器模式
9.3 迭代器模式大观园
9.4 迭代器模式在.NET框架中的实现
9.5 通过yield return实现迭代器
9.6 C# .0对迭代器模式的支持
第10章 .NET中的策略模式
10.1 税务系统
10.2 利用委托实现策略模式
10.3 .NET框架中的Provider对象
第11章 .NET中的命令模式
11.1 考勤管理系统
11.2 命令模式在WF中的运用
11.3 合成模式与命令模式的结合
第3篇 媒体播放器的设计之旅
第12章 面向对象与接口分离
12.1 拙劣的设计
12.2 面向对象设计
12.3 接口分离
12.4 解除具体依赖
第13章 接口行为的适配
13.1 新的应用场景
13.2 “狼”与“羊”的关系
13.3 引入适配器模式
13.3.1 类的适配器模式
13.3.2 对象的适配器模式
13.4 适配器模式比较
第14章 接口行为的扩展
14.1 设计走向死胡同
14.2 考察适配器模式
14.3 引入访问者模式
14.4 非循环访问者模式
14.5 合理运用访问者模式
第15章 接口行为的装饰
15.1 不断变化的需求
15.2 考虑代理模式
15.3 引入装饰器模式
第4篇 设计模式应用实践
第16章 抽象工厂模式应用
16.1 报表组件
16.2 糟糕的设计
16.3 引入抽象工厂模式
16.4 工厂对象的使用
16.5 引入策略模式和桥接模式
16.6 适配器模式扩展抽象工厂结构
16.7 接口还是抽象类
第17章 建造者模式应用
17.1 装配设备对象
17.2 糟糕的设计
17.3 引入建造者模式
17.4 从容应对扩展
第18章 命令模式应用
18.1 安装向导
18.2 糟糕的设计
18.3 引入命令模式
18.4 进一步完善
18.5 分辨对象职责与变化
第19章 职责链模式应用
19.1 员工培训系统
19.2 设计模型
19.3 设计的重构
19.4 职责链模式
第20章 观察者模式应用
20.1 监控设备状态
20.2 引入观察者模式
20.3 事件与委托改进观察者模式
第21章 代理模式应用
21.1 显示设备控件
21.2 引入代理模式
21.3 完善设计
第22章 设计模式综合应用
22.1 话单转换工具
22.2 糟糕的设计
22.3 面向对象的设计思想
22.4 引入策略模式
22.5 需求发生变化
22.6 引入模板方法模式
22.7 合理的设计才是最好的设计
22.8 引入桥接模式
22.9 分离接口
22.10 引入抽象工厂模式
第5篇 .NET体系架构
第23章 软件体系架构
23.1 分层架构模式
23.2 分层架构模式之优劣
23.3 PetShop的架构版本演化
23.4 PetShop .0的系统架构
第24章 数据访问层
24.1 数据库样式
24.2 数据对象
24.3 SQL语句之瘤
24.4 运用ORM的思想
24.5 资源库模式与工作单元模式
24.6 事务的处理
24.7 具有简单工厂特质的抽象工厂模式
24.8 服务定位器模式
第25章 消息处理
25.1 MSMQ的实现
25.1.1 消息处理模块的组成
25.1.2 消息接口
25.1.3 消息接口的实现
25.1.4 消息工厂
25.1.5 后台处理应用程序
25.1.6 引入策略模式
25.2 分布式处理
第26章 ASP.NET缓存
26.1 ASP.NET缓存概述
26.2 SqlCacheDependency特性
26.2.1 利用aspnet_regsql工具
26.2.2 利用SqlCacheDependencyAdmin类
26.3 ASP.NET缓存在PetShop .0中的实现
26.3.1 CacheDependency接口
26.3.2 CacheDependency实现
26.3.3 CacheDependency工厂
26.3.4 引入门面模式
26.3.5 引入代理模式
第27章 业务逻辑层
27.1 与领域专家合作
27.2 业务逻辑层的模式应用
27.3 PetShop的业务逻辑层
27.4 与数据访问层的通信
27.5 面向接口设计
第28章 表现层
28.1 页面控制器模式
28.2 用户管理
28.2.1 Profile特性
28.2.2 Membership特性
28.3 ASP.NET控件
28.3.1 自定义控件
28.3.2 用户控件
28.3.3 登录控件
28.3.4 Master Page
28.4 MVC模式
28.5 表现层的演变
参考文献
展开
从实践分享的视角来看,书的内容编写地非常认真。作者从自身工作的经历,分享了自己对软件设计的理解,并以设计原则这样的方式,来分享最宏观层面上的要点。总结、思考的分量,可见一斑。本书有些章节很有新意,注意到了利用自身实践过的设计模式,以真实示例的方式来介绍如何灵活使用各种设计模式。此举对读者的实际工作,颇有帮助,愿为推荐。
——西门子中国中央研究学院,首席架构师