设计模式_可复用面向对象软件的基础清晰版
很经典的教材,强烈推荐,设计模式是必学啊本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良、m表达清楚的软件设计模式,这些模式在实用环境下特别有用。本书适合大学计算机专业的学生、研究生及相关人员参考。Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design PatternsElements of Reusable Object-Oriented SoftwareOriginal edition copyright@ 1995 by Addison Wesley Longman, IncChinese edition published by arrangement with Addison Wesley Longman, Inc. Allrights reserved.…本书中文简体字版由美国 Addison Wesley公司授权机械工业出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容版权所有,侵权必究。本书法律顾问北京市展达律师事务所本书版权登记号:图字:01-19992859图书在版编目(CIP)数据设计模式:可复用面向对象软件的基础/伽玛等著;李英军等译·-北京:机械工业出版社,20009(计算机科学丛书)书名原文: Design Patterns: Elements of Reusable Object- Oriented Soft wareISBN978-7-111-07575-2I.设…Ⅱ.①伽…②李…Ⅲ.面向对象语言程序设计Ⅳ.TP312中国版本图书馆CP数据核字(2000第39439号机械工业出版社(北京市西城区百万庄大街22号邮政编码1007)7责任编辑:吴怡北京诚信伟业印刷有限公司印刷2010年7月第1版·第25次印刷184mm×260mm·16.5印张标准书号:ISBN978-7-111-07575-2定价:35.00元凡购本书,如有倒页、脱页、缺页,由本社发行部调换Www.lopsAge.com部分学者对《设计模式:可复用面向对象软件的基础》的赞誉“这本书是我长期以来所读过的写得最好、最富洞察力的书籍之……该书不是泛泛而论,而是结合实例,以最佳的方式确立了模式的合法地位。”Stan Lippman, C++ ReporGamma,Helm, Johnson和 Vlissides的这本新书将对软件设计领域产生重要且深远的影响。因为《设计模式》这本书将自己定位于面向对象软件技术,恐怕面向对象圈子以外的设计者也许会忽视它的价值,但这将是一件憾事。该书将能使从事软件设计的每个人从中获益。所有软件设计者都在使用模式,而更好地理解这种对我们工作的可复用的抽象只会使我们做得更Tom DeMarco, IEEE Software“总的来讲,这本书表达了一种极有价值的东西,对软件设计领域有着独特的贡献,因为它捕获了面向对象设计的有价值的经验,并且用简洁可复用的形式表达出来。它将成为我在寻找面向对象设计思想过程中经常翻阅的一本书;这正是复用的真实含义所在,不是吗?”Sanjiv Gossain, Joumal of object-Oriented Programming这本众人期待的书达到了预期的全部效果。“模式”的讲法来自一位建筑师的书,该书云集了经过时间考验的可用设计。作者从多年的面向对象设计经验中精选出了23个模式,这构成了该书的精华部分,每一个精益求精的优秀程序员都应拥有这本《设计模式》”Larry o Brien, Sofiware Development《设计模式》在实用环境下特别有用,因为它分类描述了一组设计良好、表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了在这方面造诣最深的专家中的半数,因而他们定义模式的方式可以作为后来者的榜样。如果要知道怎样恰当定义和描述设计模式,我们应该可以从他们的专业知识中获得启发。”Steve Bilow, Jounal of Object-Oriented programming设计模式》是一本深刻有力的书。在花费了相当的时间研究该书后,绝大部分C++程序员都能够使用模式构造出更好的软件。本书发挥了一种智能杠杄作用:提供具体工具帮助我们进行思维并有效地表达我们自己。它也许能从根本上改变你对程序设计的看法。”Tom Cargill, C++ Reportwww.topsage.com序言所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于理解,其程度远远超过了未使用模式的体系结构。模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地, ChristopherAlexander和他的同事们可能最先将模式语言( pattern language)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面向对象软件界。简而言之,软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。在本书中, Erich Gamma、 Richard helm、 Ralph Johnson和 John vlissides介绍了设计模式的原理,并且对这些设计模式进行了分类描述。因此,该书做出了两个重要的贡就:首先,它展示了模式在建造复杂系统过程中所处的角色;其次,它为如何引用一组精心设计的模式提供了一个实用方法,以帮助实际开发者针对特定应用问题使用适当的模式进行设计。我曾荣幸地有机会与本书的部分作者一同进行体系结构设计工作,从他们身上我学到了许多东西,并相信通过阅读该书你同样也会受益匪浅。Rational软件公司首席科学家Grady boochwww.topsage.comTop Sage. com前言本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不必迫不及待地翻阅手头的字典。另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。旦你理解了设计模式并且有了一种“Aha!”(而不是“Huh?”)的应用经验和体验后,你将用一种非同寻常的方式思考面向对象设计。你将拥有一种深刻的洞察力,以帮助你设计出更加灵活的、模块化的、可复用的和易理解的软件——这也是你为何着迷于面向对象技术的源动力,不是吗?当然还有一些提示和鼓励:第一次阅读此书时你可能不会完全理解它,但不必着急,我们在起初编写这本书时也没有完全理解它们!请记住,这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。我们并不认为这组设计模式是完整的和一成不变的,它只是我们目前对设计的思考的记录。因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过 Addison-Wesley写信给我们,或发送电子邮件到: design- patterns@ csuiuc. edu。你还可以发送邮件“ send design pattern source到 design-patterns- source@ csuiuc. edu获取书中的示例代码部分的源代码。另外我们有一个专门的网页报道最新的消息与更新:http://st-www.cs.uiuc.edu/users/patterns/dpbook/dpbook.htmlEG.于加州 Mountain viewRH.于蒙特利尔R.J.于伊利诺 UrbanaJV.于纽约 Hawthorne1994年8月www.topsage.com读者指南本书包括两个主要部分,第一部分(第1章和第2章)介绍了什么是设计模式以及它如何帮助你设计面向对象的软件系统。该部分包含了一个设计案例研究,展示了如何将设计模式应用于实际工作。第二部分(第3、4、5章)则是实际设计模式的分类描述。模式的分类描述构成了本书的主要部分,书中的章节根据模式的性质将其划分为三种类型:创建型( creational),结构型( structural)和行为型( behavioral)可以从多个角度使用这个模式分类描述,例如,你可以从头至尾地阅读每一个模式,也可以随机浏览其中的任何一个模式。另外一种方法是研究其中的一章,这将有助于理解原本密切关联的模式如何相互区分。模式描述中的交叉引用将给你提供寻找其他相关模式的逻辑路径,它将帮助你看清楚模式是如何相互关联的、一个模式怎样与其他模式进行组合、以及哪些模式能在一起工作。图1-1将用图示方法展现这种关系。阅读模式分类描述的另一种方法是问题导向法,你可以翻到书中的第16节查找有关设计可复用的面向对象系统过程中经常见到的问题,然后阅读解决这些问题的有关模式。有些读者首先通读模式分类描述,然后运用问题导向的方法将模式应用于他们的项目之中。如果你不是一个有经验的面向对象设计人员,我们建议你应该从那些最简单常用的模式出发Abstract Factory (3.1)● Adapter(4.1)Composite (4.3)· Decorator(44)Factory Method (3.3)e Observer(5.7)Strategy (5.9)Template Method(5. 10)很难找到一个面向对象软件系统,它没有使用书中描述的若干模式。许多大型软件系统几乎用到了所有的这些模式。上述这组模式将有助于你进一步理解设计模式本身及一般意义下的优秀的面向对象设计。www.topsage.com计算机精品学习资料大放送软考官方指定教材及同步辅导书下载|软考历年真是解析与答案软考视频|考试机构|考试时间安排Java一览无余:Java视频教程| Java se| Java eeNet技术精品资料下载汇总: ASP NET篇Net技术精品资料下载汇总:C#语言篇Ne技术精品资料下载汇总: VB NET篇撼世出击:C/C++编程语言学习资料尽收眼底电子书+视频教程Visua|C++(Vc/MFC)学习电子书及开发工具下载Perl/cGI脚本语言编程学习资源下载地址大全Python语言编程学习资料(电子书+视频教程)下载汇总最新最全Ruby、 Ruby on Rails精品电子书等学习资料下载数据库管理系统(DBMS)精品学习资源汇总: MySQL篇| SQL Server篇丨 Oracle篇最强HTML/ XHTML、CSs精品学习资料下载汇总最新 JavaScript、Ajax典藏级学习资料下载分类汇总网络最强PHP开发工具+电子书+视频教程等资料下载汇总UML学习电子资下载汇总软件设计与开发人员必备经典 LinuxcBT视频教程系列 Linux快速学习视频教程一帖通天罗地网:精品 Linux学习资料大收集(电子书+视频教程) Linux参考资源大系Linux系统管理员必备参考资料下载汇总Linux shell内核及系统编程精品资料下载汇总UNIX操作系统精品学习资料<电子书+视频>分类总汇FreeBsD/ OpenBSD/ NetBsD精品学习资源索引含书籍+视频Solaris/ Opensolaris电子书、视频等精华资料下载索引目录序言243 Decorator模式··。中●前言25支持多种视感标准…32读者指南251对象创建的抽象32第1章引言252工厂类和产品类……331.1什么是设计模式2.53 Abstract Factory模式…………3512 Smalltalk mvc中的设计模式…26支持多种窗口系统……3513描述设计模式…………426.1我们是否可以使用 Abstract Factory14设计模式的编目…模式………351.5组织编目非●·。●鲁曹7262封装实现依赖关系516设计模式怎样解决设计问题…8263 Window和 Window lmp………………37161寻找合适的对象8264 Bridge模式…40162决定对象的粒度27用户操作…………………401.6.3指定对象接口………271封装一个请求41164描述对象的实现………10272 Command类及其子类…4116.5运用复用机制…273撤消和重做……4216.6关联运行时刻和编译时刻的274命令历史记录…42结构……………………………15275 Command模式…44167设计应支持变化………1628拼写检查和断字处理4417怎样选择设计模式………………1928.1访问分散的信息………4418怎样使用设计模式。由282封装访问和遍历…45第2章实例研究:设计一个文档编283 iterator类及其子类……46辑器22284 Iterator模式……………421设计问题2328.5遍历和遍历过程中的动作22文档结构2328.6封装分析…48221递归组合24287 Visitor类及其子类…………51222图元2528.8 Visitor模式…522.23组合模式2729小结5323格式化7第3章创建型模式…231封装格式化算法2731 ABSTRACT FACTORY(抽象工厂)2.3.2 Compositor COmposition27对象创建型模式…●香。。香香。曹●572.33策略模式2032 BUILDER(生成器)—对象创建型24修饰用户界面………………29模式曾着香鲁·非电即。。非音鲁241透明围栏2933 FACTORY METHOD(工厂方法)2.4.2 MonoGlyph对象创建型模式TopSage. comVIII34 PROTOTYPE(原型)—对象创建型56 MEMENTO(备忘录)一对象行为型m模式模式…………………18835 SINGLETON(单件)—对象创建型57 OBSERVER(观察者)—对象行为型模式模式……………………19436创建型模式的讨论58 STATE(状态)一对象行为型模式…201第4章.结构型模式9159 STRATEGY(策略)——对象行为型41 ADAPTER(适配器)—类对象结构型模式……………………208模式…………92510 TEMPLATE METHOD(模板方法)42 BRIDGE(桥接)——对象结构型类行为型模式……214模式………………………………100511 MISITOR(访问者)—对象行为型43 COMPOSITE(组成)—对象结构型模式………………………218模式512行为模式的讨论…………22844 DECORATOR(装饰)—对象结构型521封装变化………228模式……1155122对象作为参数…22845 FACADE(外观)—对象结构型5123通信应该被封装还是被分布……229模式……………………1215124对发送者和接收者解耦……22946 FLYWEIGHT(享元)—对象结构型52.5总结………………231模式……………………………128第6章结论23247 PROXY(代理)——对象结构型61设计模式将带来什么………232模式………13762一套通用的设计词汇………23248结构型模式的讨论……14463书写文档和学习的辅助手段……23248.1 Adapter与 Bridge…14464现有方法的一种补充…282 Composite、 Decorator与 Proxy……l4565重构的目标……233第5章行为模式14766本书简史…23451 CHAIN OF RESPONSIBIL ITY(职责链)67模式界……………………235对象行为型模式……………1476.8 Alexander的模式语言……23552 COMMAND(命令)——对象行为型69软件中的模式…………236模式…………………154610邀请参与………………23753 INTERPRETER(解释器)—类行为型611临别感想……237模式……162附录A词汇表……23854 ITERATOR(迭代器)—对象行为型附录B图示符号指南…………241模式171附录C基本类……24455 MEDIATOR(中介者)—对象行为型参考文献……249模式1 81www.topsage.com
暂无评论