资源名称:《Java与模式》PDF

内容简介:

《Java与模式》是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。全书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、结构,以及这一模式适合于什么样的情况等。每一个章节都附有多个例子和练习题,研习这些例子、完成这些练习题可以帮助读者更好地理解所讲的内容。大多数的章节都是相对独立的,读者可以从任何一章开始读起。为了满足不同程序的读者的需要,书中提供了一些标为“专题”的章节,不阅读这些章节,对阅读书中的标准章节没有影响。

作者简介:
阎宏,美籍华人。1992年获博士学位,翌年赴日本京都大学进行博士后研究工作。他曾在美国花旗银行(Citibank)、汤臣金融(Thomson Financial)、奥本海默基金(Oppenheimer)等处担任软件开发、架构设计和技术管理等工作。

资源目录:

第一部分

第1章 模式的简史和形而上学

1.1 模式是什么

1. 2 软件模式的简史

1.3 模式的起源

1.4 与道家思想的关系

1. 5 软件的永恒之道

1. 6 模式的要素

1. 7 本书讲解模式的格式

第2章 统一建模语言uml简介

2. 1 建造世界贸易中心

2.2 什么是uml

2. 3 uml包括什么

2.4 类图

2. 5 时序图

2. 6 状态图

2.7 uml及建模的工具

第二部分

第3章 软件的可维护性与可复用性

3.1 软件系统的可维护性

. 3. 2 系统的可复用性

3.3 老子论“不武”

第4章 “开一闭”原则(ocp)

4.1 什么是“开一闭”原则

4. 2 怎样做到“开一闭”原则

4. 3 与其他设计原则的关系

4.4 策略模式对“开一闭”原则的支持

4. 5 在其他设计模式中的体现

4.6 一个重构做法的讨论

第5章 专题:java语言的接口

5. 1 什么是接口

5.2 为什么使用接口

5.3 java接口常见的用法

第6章 专题:抽象类

6.1 什么是抽象类

6.2 抽象类的用途

6.3 基于抽象类的模式和原则

6.4 什么时候才应当使用继承复用

第7章 里氏代换原则( lsp)

7.1 美猴王的智慧

7.2 什么是里氏代换原则

7. 3 里氏代换原则在设计模式中的体现

7. 4 墨子论“取譬”

7.5 从代码重构的角度理解

第8章 依赖倒转原则( dip)

8.1 为何而“倒转”

8.2 复用与可维护性的“倒转”

8. 3 依赖倒转原则

8.4 怎样做到依赖倒转原则

8.5 java对抽象类型的支持

8.6 一个例子:账号、账号的种类和账号的状态

8.7 墨子论“取周”

8.8 依赖倒转原则的优缺点

第 9章 接口隔离原则( isp)

9. 1 什么是接口隔离原则

9. 2 一个角色隔离原则的例子

9.3 定制服务的例子

第10章 合成/聚合复用原则( carp)

10.1 合成和聚合的区别

10. 2 复用的基本种类

10.3 从代码重构的角度理解

第11章 迪米特法则( lod)

11.1 迪米特法则的各种表述

11.2 狭义的迪米特法则

11.3 迪米特法则与设计模式

11.4 广义的迪米特法则

11. 5 广义迪米特法则在类的设计上的体现

11. 6 广义迪米特法则在代码层次上的实现

11. 7 老子论“圣人之治”

第三部分

第12章 简单工厂(simple factory)模式

12. 1 工厂模式的几种形态

12.2 简单工厂模式的引进

12.3 简单工厂模式的结构

12.4 简单工厂模式的实现

12.5 简单工厂模式与其他模式的关系

12.6 简单工厂模式的优点和缺点

12. 7 简单工厂模式在此java中的应用

12. 8 女娲抟土造人

第13章 工厂方法( factory method)模式

13. 1 引言

13.2 工厂方法模式的结构

13.3 工厂方法模式在农场系统中的实现

13. 4 关于工厂方法模式的实现

13. 5 java语言中工厂方法模式的例子

13.6 工厂方法模式与其他模式的关系

13.7 女蜗举绳造人

13.8 其他的例了

第14章 抽象工厂(abstract factory)模式

14.1 引言

14.2 问题

14. 3 抽象工厂模式的结构

14. 4 在什么情形下应当使用抽象工厂模式

14. 5 抽象工厂模式在农场系统中的实现

14.6 抽象工厂模式的另一个例子

14.7 “开一闭”原则

14.8 相关的模式与模式的实现

14.9 女娟造万物的故事

14. 10 附录:java awt的peer架构与抽象工厂模式

第15章 单例( singleton)模式

15. 1 引言

15.2 单例模式的结构

15.3 在什么情况下使用单例模式

15. 4 单例类的状态

15. 5 一个实用的例子:属性管理器

15.6 java语言中的单例模式

15.7 专题:不完全的单例类

15.8 相关模式

15.9 附录:双重检查成例的研究

15.10 给读者的一点建议

第16章 专题:单例模式与mx记录

16. 1 问题与解决方案

16. 2 目录服务与mx记录

16. 3 jndi架构介绍

16.4 如何使用jndi编程

16.5 系统设讨

16.6 讨论

第17章 专题:多例(multiton)模式与多语言支持

17.1 引言

17. 2 多例模式

17. 3 多语言项目的设计

第18章 专题:序列键生成器与单例及多例模式

18. 1 问题

18.2 将单例模式应用到系统设计中

18.3 将多例模式应用到系统设计中

18.4 讨论

第19章 建造(builder)模式

19.1 引言

19.2 建造模式的结构

19.3 建造模式的活动序列

19.4 建造模式的实现

19. 5 众神造人的神话故事

19.6 javamail中的建造模式

19. 7 一个发送邮件的例子

19.8 在什么情况下使用建造模式

19.9 建造模式与其他模式的关系

第20章 原始模型(prototype)模式

20.1 引言

20.2 变量、对象以及对象的引用

20.3 java对象的复制

20.4 原始模型模式的结构

20.5 模式的实现:深复制和浅复制

20.6 孙大圣的身外身法术

20.7 在什么情况下使用原始模型模式

20.8 原始模型模式的优点和缺点

20. 9 原始模型模式与其他模式的关系

第21章 专题:javabeean的“冷藏”和“解冻”

21.1 什么是“冷藏”和“解冻”

21.2 什么可以“冷藏”

21.3 beaus.instantiate()方法

21.4 怎样在jsp中使用beaus.instantiate()方法

21.5 与装饰模式的关系

第四部分

第22章 适配器( adapter)模式

22.1 引言

22.2 类的适配器模式的结构

22.3 类的适配器模式的效果

22.4 对象的适配器模式的结构

22.5 在什么情况下使用适配器模式

22.6 iterator与enumeration

22.7 利用适配器模式指方为圆

22.8 适配器模式在架构层次上的应用

22.9 关于模式实现的讨论

22.10 适配器模式与相关的模式

第23章 缺省适配( default adapter)模式

23.1 鲁智深的故事

23. 2 windowadapter是缺省适配模式

23.3 模式的结构

23.4 在什么情况下使用本模式

23.5 模式的实现

23.6 j2se中的缺省适配模式

23.7 一个例子

第24章专题:xmlproperties与适配器模式

24.1 引言

24.2 sax2浏览器

24. 3 开始xmlproperties项目

第25章 合成(composite)模式

25.1 对象的树结构

25.2 介绍合成模式

25.3 安全式和透明式的合成模式

25.4 安全式的合成模式的结构

25.5 透明式的合成模式的结构

25.6 合成模式的实现

25.7 道士的故事

25.8 一个绘图的例子

25. 9 awt库中的例子

25.10 合成模式与其他模式的关系

第26章 装饰(decorator)模式

26.1 引言

26.2 装饰模式的结构

26.3 装饰模式应当在什么情况下使用

26.4 孙大圣的故事

26.5 使用装饰模式的优点和缺点

26.6 模式实现的讨论

26.7 装饰模式与其他模式的关系

26.8 实例:grepreader

26.9 一个例子:发票系统

26.10 附录:关于适配器模式与装饰模式的对话

第27章 专题:设计模式在 java i/o库中的应用

27.1 引言

27.2 java i/o库的设计原则

27.3 装饰模式的应用

27.4 半透明的装饰模式

27.5 适配器模式的应用

27.6 从byte流到char流的适配

第28章 代理(proxy)模式

28.1 引言

28.2 代理的种类

28. 3 代理模式的结构

28. 4 代理模式的时序

28. 5 jsvs 2.0对代理模式的支持

28.6 高老庄悟空降八戒

28.7 代理模式的优点和缺点

28.8 代理模式的实现

28. 9 代理模式与其他模式的关系

第29章 专题:智能引用代理

29.1 问题

29.2 系统设计

29.3 系统的时序

29.4 系统的源代码

第30章 专题:虚拟代理的例子

30.1 问题

30.2 系统的要求

30.3 系统的设计

30.4 系统的时序

30.5 系统的源代码

第31章 享元模式( flyweight pattern)

31.1 引言

31.2 单纯享元模式的结构

31.3 复合享元模式的结构

31. 4 模式的实现

31.5 一个咖啡摊的例子

31. 6 咖啡屋的例于

31.7 享元模式应当在什么情况下使用

31.8 从代码重构的角度看享元模式

31. 9 享元模式的优点和缺点

31.10 相关的模式

第32章 门面(facade)模式

32.1 引言

32.2 门面模式的结构

32.3 门面模式的实现

32.4 在什么情况下使用门面模式

32.5 迪米特法则(lod)

32.6 一个例子

32.7 使用门面模式的设计

32.8 session门面模式

第33章 桥梁(bridge)模式

33.1 引言

33.2 桥梁模式的结构

33.3 java语言中的peer架构

33.4 驱动器和 jdbc驱动器

33.5 从重构的角度考察

33.6 桥梁模式和其他模式的关系

33.7 八戒“转世投胎”的故事

33.8 关于桥梁模式的实现

33.9 在什么情况下应当使用桥梁模式

第五部分

第34章 不变(immtable)模式

34.1 引言

34.2 不变模式的结构和实现

34.3 不变模式在java语言中的应用

34.4 不变模式的优点和缺点

34.5 不变模式与事元模式的关系

34.6 一个例子:复数类

第35章 策略( strategy)模式

35.1 引言

35.2 模式的实现

35.3 java语言内部的例子

35.4 排序策略系统

35.5 一个例子:图书折扣的计算

35.6 在什么情况下应当使用策略模式

35. 7 策略模式的优点和缺点

35. 8 策略模式与其他模式的关系

35.9 设计原则的讨论

35. 10 诸葛亮的锦囊妙计

第36章 模版方法(template method)模式

36. 1 引言

36.2 模版方法模式的结构

36.3 “好莱坞原则”

36. 4 一个例于

36. 5 继承作为复用的工具

36. 6 java语言里面使用过的模版方法模式

36. 7 模版方法模式中的方法

36. 8 模版方法模式在代码重构中的应用

36.9 重构的原则

36. 10 西天取经的八十一难

第37章 专题:servlet技术中的模式

37. 1 servlet技术介绍

37. 2 模版方法模式的使用

37. 3 观察者模式的应用

第38章 观察者(observer)模式

38. 1 引言

38. 2 观察者模式的结构

38. 3 另一种实现方案

38. 4 java语言提供的对观察者模式的支持

38. 5 菩萨的守瓶龟

38. 6 java中的dem事件机制

38. 7 观察合模式与其他模式的关系

第39章 专题:观察者模式与awt中的事件处理

39. 1 引言

39. 2 dem的结构

第40章 专题:观察者模式与sax2浏览器

40.1 引言

40.2 sax2是怎么工作的

40.3 contenthandler接口

40.4 怎样实现 contenthandler接口

40.5 怎样使用 contenthandler

40. 6 缺省适配模式与defaulthandler

40.7 简单工厂模式的应用

第41章 专题:观察者模式与swing定时器

41.1 为什么需要定时器

41.2 utility定时器与swing定时器的区别

41.3 使用swing定时器的方法

41. 4 观察者模式的应用

41.5 单例模式的应用

第42章 专题:mvc模式与用户输入数据检查

42.1 什么是mvc模式

42. 2 mvc是架构模式

42. 3 mvc模式在j2ee技术中的应用

42.4 从代码重构的角度查看

42.5 用户输人检查与mvc模式

42.6 sql注射

第43章 迭代子(iterator)模式

43.1 引言

43.2 迭代子模式的结构

43.3 迭代子模式的实现

43.4 迭代子模式的优点和缺点

43.5 一个例子

43.6 迭代子模式与其他模式的关系

第44章 专题:java对迭代子模式的支持

44. 1 java聚集

44.2 java聚集中的迭代子

44.3 java.util.iterator接口

44.4 java迭代子接口日 listlterator

44.5 enumeration与iterator

44.6 其他相关模式

第45章 责任链( chain of responsibility)模式

45.1 从击鼓传花谈起

45.2 责任链模式的结构

45.3 纯的与不纯的责任链模式

45.4 jsvs 1.0版的awt事件处理机制

45.5 《红楼梦》中击鼓传花的故事

45.6 java系统的解

45.7 责任链模式的实现

45.8 对象的树结构

45.9 dhtml中的事件处理

45.10 责任链模式与其他模式的关系

第46章 专题:定时器与击鼓传花.

46.1 线程

46.2 定时器

46.3 击鼓传花

第47章 命令( command)模式

47.1 引言

47.2 命令模式的结构

47.3 玉帝传美猴王上天

47.4 java语言内的例子:awt的事件处理

47.5 一个例子:创世纪系统

47.6 一个例子:audioplayer系统

47.7 增加宏命令功能

47.8 模式的实现

47.9 在什么情况下应当使用命令模式

47.10 使用命令模式的优点和缺点

47.11 命令模式与其他模式的关系

第48章 专题:swing库中的命令撤销和恢复

48.1 在视窗系统中使用命令模式

48.2 swing的基本撤销功能

48.3 一休论禅的文字框

第49章 备忘录( memento)模式

49.1 备忘录模式的结构

49.2 备忘录模式的白箱实现

49.3 双重接口及其在java语言中的实现

49.4 备忘录模式的黑箱实现

49.5 负责人角色的增强

49.6 备忘录模式与多重检查点

49.7 “自述历史”模式

49. 8 “假如”协议模式

49.9 备忘录模式与其他模式的关系

49.10 备忘录模式的应用

49.11 使用备忘录模式的优点和缺点

49. 12 观世音甘泉活树的故事

第50章 状态( state)模式

50.1 引言

50.2 状态模式的结构

50.3 曾侯乙编钟的描述

50.4 状态模式的效果

50.5 在什么情况下使用状态模式

50.6 关于模式实现的讨论

50.7 一个状态模式的应用例子:tcp

50.8 状态模式在绘图软件中的应用

50.9 用户登录子系统

50.10 状态模式与策略模式的区别

第51章 专题:峻山道士与状态模式

51.1 有状态的墙

51.2 异常逻辑

51.3 从代码重构的角度考察

第52章 专题:单分派和多分派

52.1 分派的概念

52. 2 双重分派

52.3 未来的java语言

第53章 访问者(visitor)模式

53.1 引言

53.2 访问者模式的结构

53.3 系统的时序图

53.4 在什么情况下应当使用访问者模式

53.5 使用访问者模式的优点和缺点

53.6 访问者模式的实现

53.7 电脑专卖系统:问题与对象

53.8 电脑专卖系统的访问者模式设计

53.9 与访问者模式有关的模式

第54章 解释器(interpreter)模式

54.1 引言

54.2 解释器模式的结构

54.3 一个示意性的实现

54.4 有关模式

第55章 调停者(mediator)模式

55.1 引言

55.2 调停者模式的结构

55.3 调停者模式的实现

55.4 迪米特法则(lod)

55.5 调停者模式的优点和缺点

55.6 调停者模式的使用条件

55.7 与调停者模式有关的模式

附录a 设计模式一览表

a. 1 创建模式

a.2 结构模式

a.3 行为模式

附录b uml图标及其java实现一览表

附录c 中英术语对照表

(责任编辑:小锋)

相关图片:

《Java与模式》PDF