Java与模式(清晰书签版).pdf

所需积分/C币:18 2018-02-07 14:17:06 39.47MB PDF

Java与模式(清晰书签版) 《Java与模式》是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。全书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、结构,以及这一模式适合于什么样的情况等。每一个章节都附有多个例子和练习题,研习这些例子、完成这些练习题可以帮助读者更好地理解所讲的内容。
前善 国鼠是盈 测圆圈 设计模式和设计原则已经成为面向对象的编程(OOP),以及面向对象的设计(OOD) 的最新进展。设计模式和设计原则可以帮助Java设计师针对日常系统设计工作所到的 很多设计问题给出结构合理、易于复用、易于维护的示范答案。本书向国内的Java程序 设计师介绍这强大的工具。 作者简介 阎宏,1964年出生于大津市。1987年毕业于中国科技大学近代 物理系,1990年于中科院理论物理所获得硕土学位,1992年获博土 学位,翌年赴日本京都大学进行博士后研究工作 作者曾于美因花旗银行( Citibank)、汤臣金融( Thomson Financial)、奧本海默基金( Oppenheimer)等处供职,进行了多年的 软件开发、架构设计和技术管理丁作。 欢迎读者与作者联系:JayaPatterns@yahoo.com,www.web Endshere con。 本书为何而写 促使作者写这本|的原因有很多,最主要的原因有以下几个。 第,作者深深感到,虽然市场上有很多介绍面向对象技术的书籍,但是这些艿籍中 有一些过于集中在理论层面,而有一些则过分地集中在具体层面上 前者脱离软件T业的现状,对做具体工作的系统设计师和程序员的帮助丨分有限 后者由于拘泥于细节,很难帮助读者发展出全局的观念和视野。比如能够疌解数据抽 象化、继承、封装和多态性是非常重要的,但是仅仪知道这些并不能使设计师设计出具有 更好的复用性和易于维护的系统。 通过前几年UML知识的普及,在读者群已绎成熟的基础之上,如果能有一本贯安理 论和实践的教材性书籍,会对很多读者有益 第二,作者深深感到,市场上没有一本以适合中国人的思维方式,针对中国读者群讲 解软件设计与设计模式的书籍,这对大批的中国读者来说,十分不公平。 在西方的思想里面,分析一个结构直到把它分解为不可分割的单位,再加以数量化的 研究和表述,是其典型的数理分析的套路。在西方科学文化中,不能够精确化和数量化的 结构不受重视。 而在中国传统的文化里面,不能够精确化和数量化并不是研究的障碍。中国的阴阳思 想可以灵活地描述任何的自然物、人造物和人类思想 模式的理论有着深厚的中国道家思想渊源,设计模式实际上非常适合中国传统的思考 方式。但是,很多屮国的模式研究者们却似乎丢掉了自己的传统文化传承,像对待其他的 舶来品一样,努力以西方的思维进行“重新”学习。 西方的作者往往由于自己对中国道家文化的理解水平所限,而在讲解模式理论的时 候,有意无意地忽略它的道家背景。当这样的书籍充斥中国的模式图书市场的时候,中国 的读者就会更加迷失在这一误区甲面 这使得作者感到一种沉重的责任感。 第三,市场上关于软件设计模式的书籍中确实有一部分是针对Java语言的,但是这 些书籍在有些方面做得还不够。出于计算机图书的生命周期较短,就造成出版周期也很短, 这使得一般的作者不愿意进行费时费力的调查研究工作。比如对于设汁模式在Java语言 API中的运用,以及设计模式是如何运用到真实的项目中去的,就较少有书籍做详细的介 绍 本书作者集中了很大的精力,对Java语言AP中的设计模式做了详尽的综合、分析, 并且从亲身参加的一些项目中抽取一些有代表性的问题,以专题讨论的方式介绍给读者。 这可以使读者像临实地一样,体会设计模式怎样应用到Iava语言AP中去的,以及 是怎样在真实的软件项目中得到运用的。 本书为谁而写 JaⅦa语言是现今最普及的纯粹OOP的编程语言,使用Java语言编程的程序师的平均 素质也相对比较高。这些程序师往往不满足于只是实现程序功能的要求,他们常常想要在 代码结构、编程风格,乃至解决问题约思考方式上不断进取和自我完善。设计原则与设计 模式就是在大量的实践中总结和理论化之后优选的代码结构、编程风格及解决问题的思考 方式。对模式的了解和掌握,是Java程序员提高自身素质的一个很好的方向。 这本书是Java程序师为Java程序员写的一本实用的设计原则和设计模式的自学教材 和使用手册。 如果你是一位Java程序员,你以此为荣,并且希望能够了解Java语言AP背后的设 计思想和设计理念,以便更加了解这语言,那么这本书就是为你而写的。 如果你是一位架构设计师,你以此为荣,并且希望能够进一步了解设计模式的起源, 以及最知名的二十几个设计模式的用意、结构直到代码实现,以便能够改善自己的系统设 计方案,那么这本书就是为你而写的。 如果你是一位设计模式的爱好者,你以此为荣,并且希望能够知道设计模式背后的设 计原则和肯后的哲学思想,那么这本书就是为你而写的 本书的组织结构 本书的内容可以大体划分成两大部分:第一部分讲述∫模式理论的起源、面向对象的 设计原则;第二部分内容则是对具体的设计模式的讲解。 在第一部分内容中,本书首先对模式理论的起源做了简单但是比较全面的介绍。本书 特别对〔 bristolψher^ alexander的模式理论与中国道家思想的联系做了哲学上的分析。然后, 本书将几个最重要的面向对象的设计原则带给读者,这些原则都会在设计模式中具体体现 出来 在第二部分内中,本书分别对最著名的儿个创建模式、结构模式以及行为模式做了 讲解。特别应当指出的是,本书的讲解有三大特点。 第一个特点,本书的讲解结合了具体的系统设计实例,比如单例模式和多例模式的讲 解就结合了两个出现在真实的华尔街金融网站系统中的设计实例。读者可以将这些设计细 节经过完善后使用到自己的系统设计中去。 第二个特点,木书的讲解结合了中国古代的神话传说、历史故事,内容贴切而生动活 泼,可以给人以深刻的印象。 第二个特点,本书的井解给出∫大量的附图和可运行的代码,使读者可以一方面阅读 文字,¨方面欣赏插图,另方面又可以将代码运行在Java坏境屮运行,并通过结果硏 究其结构。 怎样阅读本书 如果读者把本书当做本手册,那么读者可以从书的任何个章节开始阅读。本书的 大多数章节都是与其他的章节相对独立、自成一休的,在少数依赖」其他章节的情况卜, 都会提醒读者首先阅读哪些章 如果将本书作为臼学或教学的教材使用的话,则个·定费沿川模式的逻辑分类顺序。 在下面就根据本书所包括的模式的难易、内在逻辑联系给出一个适合于自学成才和教学的 顺序。 简单工丿模式(创建模式):是最简单的模式,有助于引岀工厂方法模式 T厂方法模式(创建模式):工厂方法模式在后面的许多模式都有应用,它在模式的 讨论里屡见不鲜。了解工厂方法模式是了解所有模式的起点 策略模式(行为模式):策略模式在本书的讨论里频繁岀现。早些理解策眳模弌有助 于理解其他的模式。 装饰模式(结构模式):装饰模式将是读者第一次接触到的模式的高雅之处。学会区 別装饰模式和策略模式,也将是读者第一次学会区别看上去相似而实质不同的模式。 在学习了装饰模式之后,感兴趣的读者可以进步阅读装饰模式在 Jaya ilo中的应用 作为补充内容。 合成模式(结构模式):合成模式在所有场合都有可能出现。合成模式经常与迭代子 模式、责任链模式、解释器模式、访问者模式联合使用,因此,好好掌握合成模式有助于 理解后面的有关模式。 迭代子模式(行为模式):学习迭代子模式可以加深读者对合成模式的理解。本书还 提供了关于Java语言对迭代子模式的支持的专题分析,供感兴趣的读者阅读。 模版方法模式(行为模式):学习模版方法模式可以加深读者对策略模式以及简单工 厂模式、工厂方法模式的理解。在迭代子模式里,模版方法模式经常被用到。 夲书还提供了关于 Jaya servlet构造中的设计模式,主要是模版方法模式的专题研究。 抽象工厂模式〔创建模式):抽象工J模式是创建模式里的第三个模式。读者回到这 个模式,可以复习一下工厂方法模式。 在这一章后面的附录中,本书还给出了Java语言API中所使用的抽象工厂模式,供 感兴趣的读者阅读。 建造模式(创建模式):读者可以比较一下建造模式与抽象工厂模式的异同。 单例模式(创建模式);单例模式经常用来实现抽象工厂模式。在单例模式的“相关 模式”一节,对这一点有更详尽的描述。 本书为单例模式提供了一个专题研究章节,用来加深读者对这个重要模式在具体系统 设计中的煮义的了解。 多例模式(创建模式);:多例模式是对单例模式的推广。在学习了单例模式之后,学 习多例模式,可以对隐藏在二者背后的设计思想有吏深入的了解 代理模式(结构模式):读者在这里有机会学习代理模式怎样控制外界对一个对象的 引用。代理模式也把读者引导到下个模式—适配器模式 本书利用了三章的篇幅,分别以代理模式的基本实现、智能引用代理和虚拟代理等具 体种类详细地讲解了代理模式是怎样实现和应用到具体问题中去的。 适配器模式(结构模式):读者可以学习和比较适配器模式与装饰模式、代理模式 以及后面的桥梁模式的异同。 在学习了适配器模式之后,感兴趣的读者可以进步阅读适配器模式在 Java lo中的 应用,作为补充内容。 桥梁模式(结构模式):现在读者可以比较桥梁模式与适配器模式及代理模式的异同。 峡省适配模式(结构模式):缺省适配模式是适配器模式的一种特例。在学习了普通 的适配器模式之后,再学习缺省适配模式可以更好地体会两者的关系和区别。 调停者模式(行为模式):学习调停者模式可以作为学习和理解观察者模式,以及MVC 模型-视窗-控制, Model-vew- Controller)设计的准备工作。 观察者模式(行为模式):读者可以在学习中发现调停者模式是怎样在观察者模式里 发挥作用,实现MVC这一经典设计的。 读者如果使用过Java语言的事牛处理机制的话,实际卜就己经使用过观察者模式 只是没有察觉而已。本书除了使用一章的篇幅讲解观察者模式本身之外,还使用了三章的 篇幅讲解观察者模式在几个著名的 Java ap中的应用。 MvC模式(架构模式):Mv℃模式包含合成模式、策略模式、观察者模式等,可以 是这些设计模式的联合运用。 责任链模式(行为模式):学习责任链模式,读者可以比较责任链模式和观察者模式 调停者模式是怎么处理调用的。 在这一章后面,本书还提供了一个专题章节,介绍使用责任链模式在Java语言里对 “击鼓传花”游戏进行模拟的内容。 备忘录模式(行为模式):读者学习备忘录模式,并讨论此模式是怎样实现undo和redo 的,并比较下面要介绍的命令模式的处理方法。 命令模式(行为模式):命令模式可以有很多种使用方法,其中之一与备忘录模式有 关,因此,在备忘录模式后面介绍。 X 本书还对 Swing库中命令的撤销做了介绍。 原始模型模式(创建模式〕:这可能是创建模式中最复杂的一个。原始模型模式经常 与命令模式起使用,这就是为什么在命令模式后面介纤的原因。 作为补充河读,本书还对 Javabean的串行化和并行化做了介绍 状态模式(行为模式):读者可以通过学习状态模式来理解…个对象改变状态的另 种方式 本书利用状态模八对《聊斋志异〉屮的崂山道士的故事做了分析。 访问者模式(行为模式〕:访问老模式经常与合成模式、迭代了模式起联合使用。 本书在介绍访问者模式之前,对双重分派的概念做了介绍。 享元模式(结构模式):这是所有常见的模式中最复杂的个模式。这…模式的应用 在下面的释器模式里介绍。 解释器模式(行为模式):这是个复杂的模式。学习这模式最好是在学习了享元 模式以及访问者模式之后。 门面模式(结构模式):这是最后学习的个模式。在学习了解释器模式之后,门面 模式就比较好学。因为讲解门面模式旳环境泶常与讲解解释器模弌的环境是·样的。 以上仅供自学和教学者参考。 鸣谢 没有多位朋友的鼎力相助,本书不叫能面世。首先,作者的同事BoY地阅读了本书 的大部分文稿,并提出了非常有用的意见。此外, Daniel yu、 David W. liu、 Wilson liu、 Richard Tang、 Luo Ding、 Tony Feng也阅读了本书的部分文稿,并提出了宝贵意见,同时 蒋涛先牛、刘晓融先生也提出了很多好的意见。他们意见都已经反映到本书的内容之中。 每本书都是编辑与作者共同创造的成果。电了工业出版社的编辑对本书的面世做了 大量细致入微的工作。 作者的爱妻冯君也曾数遍阅读本书,并在本书的写作期间给予了人量的支持。没有她 自始至终的支持和帮助,这本书同样是不可能面世的。 在木书出版之际,本人对以上各位的支持致以最诚挚的感谢。 参考文献与进一步阅读 除特别注明的参考文献之外,本书的各个章节还使用了以下的参考文献。这些参考文 献都是关于软件设计模式和其他模式理论的著作,可供读者做进步的阅读 [GOF95]E Gamma, R. Helm, R Johnson, and J. Vlissides Reusable Object-Oriented Software. Addison-Wesley, 1995. Design Patterns lements of GOF95 Z E Gamma,R.Helm,R. Johnson,andJ.Ⅴ Mlissides.《改计模式—一可复用 面向对象软件的基础》.李英军,亐晓星,蔡敏,刘建中译.吕建审校.机槭工业出版社 2000 [VLISSIDES98] John Vlissides. Pattern Hatching. Addison-Wesley, 19( 98 XI [GRAND98]Mark Grand. Patterns in Java. VoL 1. John Wiley Sons, Inc, 1998 [GrAND98-2] Mark Grand Patterms in Java. Vol 2. John wiley sons, Inc, 1998 [GRAND98-3] Mark Grand. Pattems in Java. Vol 3. John Wiley sons, Inc, 1998 [Cooper00] James W. Cooper. Java Design Patterns: A Tutorial. Addison-Wesley, 2000 GOVONI99] Darren Govoni. Java Application Frameworks. Wiley Computer Publishing 1999 [ALPERT98] Sherman R. Alpert, Kyle Brown, and Bobby woolf. The Design Pattems Samlltalk Companion. Addison-Wesley, 1998 [STELTINGO2] Stephen Stelting, Olav Maassen. Applied Java Patterns. Prentice Hall 2002 [2EEPATTO1] Deepak Alur, John Crupi and Dan Malks Core J2EE Patterns. published b Prentice Hall, 2001 METSKERO2] Steven John Metsker. Design Patterms Java Workbook. published by Addison-Wesley, 2002 [ANTI99] William J Brown, Hays w, McCormick lll, Scott W. Thomas. AntiPatterns and Patterns in Software Configuration Management, Wiley, 1999 SHALLO2] Alan Halloway and James R. Trott. Design Patterns Explained -A New Perspective on Object-Oriented Design. Addison-Wesley, 2002 [GOLDO2] Brandon Goldfedder. The Joy of Patterns Using Patterns for Enterprise Development. Addison-Wesley, 2002 kKIRK02] Kirk Knoernschild. Java Design -Objects, UML, and Process. Addison- Wesley, 2002 这些书籍都可以作为读者进一步阅读的方向。除了这些书籍之外,本书还向读者推荐 以下的这些中文资料网站: http://www-900.ibm.com/developerWorks/cn/index.shtml htt/www.yesky.com(程序方舟) http://www.chinajavaworld.com ht p:7/www.cn-java.com http://www.csdn.net httpwww.smiling.com htp:Mw. Webendshere. com本书的姊妹网站 第一部分 第6章专题:抽象类 61 第1章模式的简史和形而上学3 61什么是抽象类 61 1.1模式是什么…… 62抽象类的用途 61 12软件模式的简史 63基于抽象类的模式和原则 13模式的起源 番番卜 3458 64什么时候才应当使用继承复用…64 14与道家思想的关系 第7章里氏代换原则(LSP).69 1.5软件的永恒之道 7,1美猴王的智慧.… 69 16模式的要素…10 72什么是里氏代换原则 17本书讲解模式的格式… 73里氏代换原则在设计模式中的 第2章统一建模语言UML简介∴.13 体现 2.1建造界贸易中心 13 74墨子论“取譬〃 73 22什么是UML…… 14 75从代码重构的角度理解 74 23UML包括什么… 15 第8章依赖倒转原则(DIP) 24类图 17 81为何而“倒转” 音自4自非是看歌甲聊p甲单 85 25时序图 24 82复用与可维护性的“倒转 86 26状态图 25 83依赖倒转原则 27UML及建模的工具 27 84怎样做到依赖倒转原则 第二部分 85Java对抽象类型的支持 第3章软件的可维护性与可复用性.33 86一个例子:账号、账号的种类和 31软件系统的可维护性 33 账号的状态 32系统的可复用性 37 87墨子论“取周 95 3.3老子论“不武” 40 88依赖倒转原则的优缺点 第4章“开-闭”原则(OCP)…41第9章接口隔离原则(ISP) 4.1什么是“开~闭”原则……1 91什么是接口隔离原则…97 42怎样做到“开-闭”原则 41 92一个角色隔离原则的例子 43与其他设计原则的关系 93定制服务的例子, 44策略模式对“开-闭”原则 第10章合成聚合复用原则 的支持 5 (CARP) 45在其他设计模式中的体现 10.1合成和聚合的区别 46一个重构做法的讨论……49 10.2复用的基本种类…103 第5章专题:Java语言的接口 10.3从代码重构的角度理解……105 51什么是接口 53第11章迪米特法则(IoD) I09 52为什么使用接口 54 11迪米特法则的各种表述 53Java接口常见的用法.5 12狄文的迪米特法则 113迪米特法则与设计模式……114 1∠6抽象工厂模式的另一个例子…19 114广义的迪米特法则 116 147“开-闭”原则 19 1.5广义迪米特法则在类的设计上 148相关的模式与模式的实现…198 的体现 117 149女娲造万物的故事.200 1.6广义迪米特法则在代码层次上 14.10附录: Java awT的Per架构 的实现.… 与抽象工厂模式 206 17老子论“圣人之治” 120第15章单例( Singleton)模式 ◆非●鲁 209 第三部分 151引言, 聊b』申b晶鲁咖自·●dtp 209 第12章简单工厂( Simple Factory) 152单例模式的结构 0 模式……127 153在什么情况下使用单例模式∴215 121工厂模式的几种形态 127 154单例类的状态 216 122简单工厂模式的引进… 128 155一个实用的例子:属性管理器…217 12.3单工厂模式的结构. 134 156Java语言中的单例模式…23 124简单工厂模式的实现.…136 157专题:不完全的单例类…226 12.5简单工厂模式与其他模式的 158相关模式 227 关系… 159附录:双重检查成例的研究……230 I26简单工厂模式的优点和缺点…142 15.10给读者的一点建议 127简单工厂模式在Ja中的应用143第16章专题:单例模式与Mx 128女娲抟土造人……146 记录 235 第13章工厂方法( Factory Method 16.1问题与解决方案……235 模式…..15 162目录服务与MX记录……237 131引言 151 163JND]架构介绍…237 132工厂方法模式的结构…153 164如何使用ND编程 238 133工丿方法模式在农场系统中 165系统设计 241 的实现 157 166讨论 246 134关于工厂方法模式的实现………162第17章专题:多例( Multiton)模式 13.5Java话言中工厂方法模式的例子.165 与多语言支持…1253 136T厂方法模式与其他模式的关系.168 171引 137女娲举绳造人 170 172多例模式 254 13.8其他的例子… 170 173多语言项目的设计 258 第14章抽象工厂( Abstract Factory) 第18章专题:序列键生成器与单例及 模式…...179 多例模式…1267 141引言 l79 18.I问 267 142问题 181 182将单例模式应用到系统设计中∴.269 143抽象工厂模式的结构.… 183将多例模式应用到系统设计中∴181 144在什么情形下应当使用抽象 184讨论 工厂模式… 189第19章建造( Builder)模式,285 14.5抽象工厂模式在农场系统中 191引言. 285 的实现 91 19.2建造模式的结构 286

...展开详情

评论 下载该资源后可以进行评论 2

lxl870803 还行 不算太清晰 勉强可以看了
2018-12-19
回复
hanvslin 网上可以搜到的同一个扫描版本,但是资源不是很清晰!
2018-12-18
回复
img

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐