内容简介
第一篇 模式介绍
第1章 谈面向对象和模式
1.1什么是对象
1.2面向对象的好处
1.3重用
1.4模式简史
1.5什么是模式
1.6学习设计模式的一些常见问题
1.7本章关键词
第2章 第1个模式——模板方法(Template Method)模式
2.1从回家过年说起
2.1.1 DRY (Don’t Repeat Yourself)
2.1.2变化+重复,如何维护
2.2模板方法(Template Method)模式
2.2.1使用继承
2.2.2模板方法模式
2.3引入回调(Callback)
2.4总结
2.5本章关键词
第二篇 创建对象
第3章 单例(Singleton)模式
3.1最简单的单例
3.2进阶
3.2.1延迟创建
3.2.2线程安全
3.2.3 Double-Check Locking
3.2.4 Initialization on demand holder
3.2.5 Singleton的序列化
3.3总结
3.4本章关键词
第4章 工厂方法(Factory Method)模式
4.1工厂方法模式
4.1.1类图
4.1.2创建数据库连接对象
4.2静态工厂方法
4.3总结
4.4本章关键词
第5章 原型(Prototype)模式
5.1原型模式
5.2寄个快递
5.3实现
5.3.1 UML静态类图
5.3.2代码实现
5.4深拷贝(Deep Copy)
5.5总结
5.6本章关键词
第6章 控制反转(l oC)
6.1从创建对象谈起
6.2使用工厂方法模式的问题
6.3 Inversion of Control(控制反转)
6.3.1 IoC和DI(Dependency Injection,依赖注入)
6.3.2 Service Locator(服务定位器)
6.3.3 Dependency Injection
6.4总结
6.5本章关键词
第三篇 构建复杂结构
第7章 装饰器(Decorator)模式
7.1记录历史修改
7.2 Open-Closed Principle(开放一封闭原则,OCP)
7.3装饰器(Decorator)模式
7.3.1类图
7.3.2实现
7.3.3一点变化
7.3.4如何使用
7.3.5测试
7.4装饰器模式的优缺点
7.5总结
7.6本章关键词
第8章 代理(Proxy)模式
8.1代理(Proxy)模式
8.1.1类图
8.1.2访问分布式对象
8.2 J2SE动态代理
8.2.1类和接口
8.2.2调用原理
8.2.3实现同步
8.2.4总结
8.3和装饰器(Decorator)模式的比较
8.4总结
8.5本章关键词
第9章 适配器(Adapter)模式
9.1打桩
9.2其他适配器模式
9.2.1类适配器
9.2.2双向适配器
9.3测试
9.4和代理(Proxy)模式的比较
9.5总结
9.6本章关键词
第10章 外观(Facade)模式
10.1外观(Facade)模式
10.2 Least Knowledge Principle(最少知识原则)
10.3懒惰的老板请客
10.4 EJB里的外观模式
10.5总结
10.6本章关键词
第11章 组合(Composite)模式
11.1组合模式概述
11.1.1类图
11.1.2使用组合(Composite)模式
11.1.3测试
11.2透明的组合模式
11.3安全的组合模式VS透明的组合模式
11.4还需要注意什么
11.5总结
11.6本章关键词
第四篇 行为模式
第12章 策略(Strategy)模式
12.1既要坐飞机又要坐大巴
12.2封装变化
12.3策略模式
12.4还需要继承吗
12.5优先使用合成而非继承
12.6总结
12.7本章关键词
第13章 状态(State)模式
13.1电子颜料板
13.2 switch-case实现
13.3如何封装变化
13.4状态模式
13.5使用Enum类型
13.6与策略(Strategy)模式的比较
13.7总结
13.8本章关键词
第14章 观察者(Observer)模式
14.1股票价格变了多少
14.2观察者模式
14.2.1如何实现
14.2.2观察者模式
14.2.3 Java标准库的观察者模式
14.3总结
14.4本章关键词
第五篇 终点还是起点
第15章 面向切面的编程(AOP)
15.1记录时间
15.2 AOP(Aspect-OrientedProgramming)
15.2.1一些重要概念
15.2.2 OOP实现横切
15.2.3 AOP实现技术
15.3 AOP框架介绍
15.4 AOP联盟(AOP Alliance)
15.5使用AOP编程的风险
15.6 OOP还是AOP
15.7总结
15.8本章关键词
第16章 面向对象开发
16.1写在面向对象设计之前
16.2汲取知识
16.3横看成岭侧成峰
16.4提炼模型
16.5应用设计模式
16.6不能脱离实现技术
16.7重构
16.8过度的开发(Over-engineering)
16.9总结
16.10本章关键词
第17章 结语
17.1感悟
17.2面向对象的开发范式
17.3一些原则
17.4写在模式之后
17.5本章关键词
附录 推荐阅读资源
1 Java语言相关学习图书
2 J2EE技术相关图书
3面向对象设计相关图书
4给Agile(敏捷)开发人员推荐的书籍
5网站和论坛
参考文献