Java与模式 阎宏著 高清书签版PDF下载

转载至:  https://yq.aliyun.com/articles/607543

下载链接: 

下载声明:  本资料仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!

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

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

1.1  模式是什么 3

1.2  软件模式的简史 3

1.3  模式的起源 4

1.4  与道家思想的关系 5

1.5  软件的永恒之道 9

1.6  模式的要素 10

1.7  本书讲解模式的格式 12

第2章  统一建模语言UML简介 15

2.1  建造世界贸易中心 15

2.2  什么是UML 16

2.3  UML包括什么 17

2.5  类图 19

2.6  时序图 27

2.7  状态图 28

2.8  UML及建模的工具 30

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

3.1  软件系统的可维护性 35

3.2  系统的可复用性 39

3.3  老子论“不武” 42

第4章  “开-闭”原则(OCP) 45

4.1  什么是“开-闭”原则 45

4.2  怎样做到“开-闭”原则 45

4.3  与其他设计原则的关系 47

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

4.5  在其他设计模式中的体现 50

4.6  一个重构做法的讨论 54

第5章  专题:Java语言的接口 59

5.1  什么是接口 59

5.2  为什么使用接口 60

5.3  Java接口常见的用法 63

第6章  专题:抽象类 69

6.1  什么是抽象类 69

6.2  抽象类是用来继承 70

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

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

第7章  里氏代换原则(LSP) 79

7.1  美猴王的智慧 79

7.2  什么是里氏代换原则 80

7.3  里氏代换原则在设计模式中的体现 82

7.4  墨子论“取譬” 83

7.5  从代码重构的角度理解 84

第8章  依赖倒转原则(DIP) 95

8.1  为何而“倒转” 95

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

8.3  依赖倒转原则 96

8.4  怎样做到依赖倒转原则 99

8.5  Java对抽象类型的支持 101

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

8.7  墨子论“取周” 106

8.8  依赖倒转原则的长处和短处 107

第9章  接口隔离原则(ISP) 109

9.1  什么是接口隔离原则 109

9.2  一个角色隔离原则的例子 110

9.3  定制服务的例子 112

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

10.1  合成和聚合的区别 115

10.2  复用的基本种类 115

10.3  从代码重构的角度理解 117

第11章  迪米特法则(LoD) 121

11.1  迪米特法则的各种表述 121

11.2  狭义的迪米特法则 121

11.3  迪米特法则与设计模式 126

11.4  广义的迪米特法则 128

11.5  广义迪米特法则在类的设计上的体现 129

11.6  广义迪米特法则在代码层次上的实现 133

11.7  老子论“圣人之治” 133

第12章  简单工厂(Simple Factory)模式 139

12.1  工厂模式的几种形态 139

12.2  简单工厂模式的引进 139

12.3  简单工厂模式的结构 146

12.4  简单工厂模式的实现 148

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

12.6  模式的优点和缺点 155

12.7  简单工厂模式在Java中的应用 156

12.8  女娲抟土造人 160

第13章  工厂方法(Factory Method)模式 165

13.1  引言 165

13.2  工厂方法模式的结构 167

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

13.4  关于工厂方法模式的实现 177

13.5  Java语言中工厂方法模式的例子 179

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

13.7  女娲举绳造人 185

13.8  其他的例子 185

第14章  抽象工厂(Abstract Factory)模式 193

14.1  引言 193

14.2  问题 195

14.3  抽象工厂模式的结构 198

14.4  在什么情形下应当使用抽象工厂模式 204

14.5  抽象工厂模式在农场系统中的实现 205

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

14.7  “开-闭”原则 212

14.8  关于模式的实现 213

14.9  女娲造万物的故事 214

第15章  单例(Singleton)模式 221

15.1  引言 221

15.2  单例模式的结构 222

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

15.4  单例类的状态 229

15.5  一个实用的例子:属性管理器 230

15.6  Java语言中的单例模式 235

15.7  专题:不完全的单例类 239

15.8  相关模式 240

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

15.10  给读者的一点建议 247

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

16.1  问题与解决方案 249

16.2  目录服务与MX记录 251

16.3  JNDI架构介绍 252

16.4  如何使用JNDI编程 253

16.5  系统设计 255

16.6  讨论 261

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

17.1  引言 267

17.2  多例模式 269

17.3  多语言项目的设计 272

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

18.1  问题 283

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

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

18.4  讨论 300

第19章  建造(Builder)模式 301

19.1  引言 301

19.2  建造模式的结构 302

19.3  建造模式的活动序列 307

19.4  建造模式的实现 307

19.5  众神造人的神话故事 312

19.6  JavaMail中的建造模式 313

19.7  一个发送邮件的例子 315

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

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

第20章  原始模型(Prototype)模式 335

20.1  引言 335

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

20.3  Java对象的复制 337

20.4  原始模型模式的结构 341

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

20.6  孙大圣的身外身法术 347

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

20.8  模式的优点和缺点 359

20.9  原始模型模式与其他模式的关系 359

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

21.1  引言 363

21.2  什么是“冷藏”和“解冻” 363

21.3  什么可以“冷藏”,什么不可以 364

21.4  Beans.instantiate()方法 366

21.5  怎样在JSP中使用Beans.Instantiate()方法 372

21.6  与装饰模式的关系 374

第22章  适配器(Adapter)模式 379

22.1  引言 379

22.2  类的适配器模式的结构 380

22.3  类的适配器模式的效果 382

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

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

22.6  Iterator与Enumeration 384

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

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

22.9  关于模式实现的讨论 393

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

第23章  缺省适配(Default Adapter)模式 401

23.1  鲁智深的故事 401

23.2  WindowAdapter是缺省适配模式 404

23.3  模式的结构 406

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

23.5  模式的实现 408

23.6  J2SE中的缺省适配模式 408

23.7  一个例子 410

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

24.1  引言 415

24.2  SAX2浏览器 417

24.3  开始XMLProperties项目 423

第25章  合成(Composite)模式 435

25.1  对象的树结构 435

25.2  介绍合成模式 437

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

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

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

25.6  合成模式的实现 446

25.7  道士的故事 447

25.8  一个绘图的例子 448

25.9  AWT库中的例子 454

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

第26章  装饰(Decorator)模式 461

26.1  引言 461

26.2  装饰模式的结构 461

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

26.4  孙大圣的故事 467

26.5  使用装饰模式的长处和短处 468

26.6  模式实现的讨论 469

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

26.8  实例:GrepReader 473

26.9  一个例子:发票系统 478

26.10  关于适配器模式与装饰模式的对话 491

第27章  专题:设计模式在Java I/O 库中的应用 497

27.1  引言 497

27.2  java.io库的设计原则 499

27.3  装饰模式的应用 500

27.4  半透明的装饰模式 509

27.5  适配器模式的应用 512

27.6  从byte流到char流的适配 518

第28章  代理(Proxy)模式 525

28.1  引言 525

28.2  代理的种类 527

28.3  代理模式的结构 529

28.4  代理模式的时序 532

28.4  Java 2.0对代理模式的支持 533

28.5  高老庄悟空降八戒 537

28.5  代理模式的长处和短处 538

28.6  模式的实现 539

28.7  代理模式与其他模式的关系 540

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

29.1  问题 543

29.2  系统设计 543

29.3  系统的时序 546

29.4  系统的源代码 546

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

30.1  问题 551

30.2  系统的要求 552

30.3  系统的设计 553

30.4  系统的时序 554

30.5  系统的源代码 555

第31章  享元模式(Flyweight Pattern) 559

31.1  引言 559

31.2  单纯享元模式的结构 560

31.3  复合享元模式的结构 564

31.4  模式的实现 569

31.5  一个咖啡摊的例子 575

31.6  咖啡屋的例子 580

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

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

31.9  享元模式的长处和短处 587

31.10  相关的模式 588

第32章  门面(Facade)模式 595

32.1  引言 595

32.2  门面模式的结构 597

32.3  门面模式的实现 598

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

32.5  迪米特法则(LoD) 599

32.6  一个例子 599

32.7  使用门面模式的设计 603

32.8  Session门面模式 606

第33章  桥梁(Bridge)模式 609

33.1  引言 609

33.2  桥梁模式的结构 611

33.3  Java语言中的Peer架构 613

33.4  驱动器和JDBC驱动器 617

33.5  从重构的角度考察 618

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

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

33.8  关于桥梁模式的实现 629

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

第34章  不变(Immutable)模式 639

34.1  引言 639

34.2  不变模式的结构 639

34.3  不变模式的实现 640

34.4  不变模式在Java语言中的应用 640

34.5  不变模式的优点和缺点 642

34.6  不变模式与享元模式的关系 642

34.7  一个例子:复数类 643

第35章  策略(Strategy)模式 657

35.1  引言 657

35.2  模式的实现 659

35.3  Java语言内部的例子 660

35.4  排序策略系统 662

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

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

35.7  策略模式的长处和短处 668

35.8  策略模式与其它模式的关系 669

35.9  设计原则的讨论 671

35.10  诸葛亮的锦囊妙计 672

第36章  模板方法(Template Method)模式 677

36.1  引言 677

36.2  模板方法模式的结构 677

36.3  “好莱坞原则” 680

36.4  一个例子 680

36.5  继承作为复用的工具 683

36.6  Java语言里面使用过的模板方法模式 685

36.7  模板方法模式中的方法 686

36.8  模板方法模式在代码重构中的应用 688

36.9  化重构的原则 692

36.10  西天取经的八十一难 692

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

37.1  Servlet技术介绍 697

37.2  模版方法模式的使用 700

37.3  观察者模式的应用 704

第38章  观察者(Observer)模式 711

38.1  引言 711

38.2  观察者模式的结构 712

38.3  第二种实现方案 716

38.4  Java语言提供的对观察者模式的支持 720

38.5  菩萨的守瓶龟 727

38.6  Java中的DEM事件机制 728

38.7  观察者模式与其他模式的关系 729

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

39.1  引言 733

39.2  DEM的结构 734

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

40.1  引言 749

40.2  SAX2是怎么工作的 750

40.3  ContentHandler接口 750

40.4  怎样实现ContentHandler接口 752

40.5  怎样使用ContentHandler 754

40.6  缺省适配模式与DefaultHandler 756

40.7  简单工厂模式的应用 761

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

41.1  为什么需要定时器 763

41.2  Utility定时器与Swing定时器的区别 763

41.3  使用Swing定时器的方法 765

41.4  观察者模式的应用 766

41.5  单例模式的应用 769

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

42.1  什么是MVC模式 775

42.2  MVC是架构模式 778

42.3  MVC模式在J2EE技术中的应用 779

42.4  从代码重构的角度考察 781

42.5  用户输入检查与MVC模式 783

42.5  SQL 注射Injection 785

第43章  迭代子(Iterator)模式 791

43.1  引言 791

43.2  迭代子模式的结构 793

43.3  迭代子模式的实现 804

43.4  迭代子模式的长处和短处 806

43.5  一个例子 806

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

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

44.1  Java聚集 819

44.2  Java聚集中的迭代子 821

44.3  java.util.Iterator接口 823

44.4  Java迭代子接口ListIterator 826

44.5  Enumeration与Iterator 831

44.6  其他相关模式 833

第45章  责任链(Chain of Responsibility)模式 835

45.1  从击鼓传花谈起 835

45.2  责任链模式的结构 835

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

45.4  Java1.0版的AWT事件处理机制 839

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

45.6  Java系统的解 842

45.7  责任链模式的实现 849

45.8  对象的树结构 850

45.9  DHTML中的事件处理 851

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

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

46.1  线程 859

46.2  定时器 860

46.3  击鼓传花 862

第47章  命令(Command)模式 873

47.1  引言 873

47.2  命令模式的结构 873

47.3  玉帝传美猴王上天 877

47.4  Java语言内的例子:AWT的事件处理 878

47.5  一个例子:创世纪系统 878

47.6  一个例子:AudioPlayer系统 883

47.7  增加宏命令功能 889

47.8  模式的实现 891

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

47.10  使用命令模式的长处和短处 893

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

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

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

48.2  Swing的基本的撤销功能 905

48.3  一休论禅的文字框 913

第49章  备忘录(Memento)模式 921

49.1  引言 921

49.2  备忘录模式的结构 922

49.3  备忘录模式的白箱实现 923

49.4  双重接口及其在Java语言中的实现 928

49.5  备忘录模式的黑箱实现 931

49.6  负责人角色的增强 937

49.7  备忘录模式与多重检查点 937

49.8  “自述历史”模式 944

49.9  “假如”协议模式 948

49.10  备忘录模式与其他模式的关系 949

49.11  备忘录模式的应用 950

49.12  使用备忘录模式的长处和短处 953

49.13  观世音甘泉活树的故事 953

第50章  状态(State)模式 963

50.1  引言 963

50.2  状态模式的结构 963

50.3  曾侯乙编钟的描述 965

50.4  状态模式的效果 966

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

50.7  关于模式实现的讨论 967

50.8  一个状态模式的应用例子:TCP 968

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

50.10  用户登录子系统 971

50.11  状态模式与策略模式的区别 977

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

51.1  有状态的墙 981

51.2  异常逻辑 981

51.3  从代码重构的角度考察 982

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

52.1  分派的概念 987

52.2  双重分派 992

52.3  未来的Java语言 999

第53章  访问者(Visitor)模式 1005

53.1  引言 1005

53.2  访问者模式的结构 1007

53.3  系统的时序图 1013

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

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

53.6  访问者模式的实现 1016

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

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

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

第54章  解释器(Interpreter)模式 1041

54.1  引言 1041

54.2  解释器模式的结构 1042

54.3  一个示意性的实现 1043

54.4  有关模式 1053

第55章  调停者(Mediator)模式 1057

55.1  引言 1057

55.2  调停者模式的结构 1061

55.3  调停者模式的实现 1066

55.4  迪米特法则(LoD) 1066

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

55.6  调停者模式的使用条件 1067

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

打赏 支付宝打赏 微信打赏

如果文章对您有帮助,欢迎移至上方打赏按钮...

随手一点
  • 打酱油

    72人

  • 197人

  • 呵呵

    13人

  • 草泥马

    6人

文章评论 抢沙发