本书从一个新的视角描述面向对象设计,将面向中对象编程的原则与运用设计模式力量创建健壮、可靠的软件开发环境结合起来。书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的优越性。本书适用于学习面向中对象设计和设计模式的学生、程序员以及从事软件开发的人士。\r\n 本书要点包括:\r\n 对象、封装和继承的新观点。\r\n 设计模式的思想、起源及其在软件设计学科中的应用。\r\n 模式基础以及使用统一建模语言(UML)进行面向对象软件开发。\r\n 如何实现关键模式——Strategy(策略)、Observer(观察者)、Bridge(桥接)、Decorator(装饰)等等。\r\n 共同点/变化点分析、设计模式以及它们如何帮助理解抽象类。
第1篇 面向中对象软件设计简介\r\n 第1章 面向对象范式\r\n 第2章 UML——统一建模语言\r\n 第2篇 传统面向对象设计的局限性\r\n 第3章 一个急需灵活代码的问题\r\n 第4章 一个标准面向对象解决方案\r\n第3篇 设计模式\r\n 第5章 设计模式简介\r\n 第6章 Facade(外观)模式\r\n 第7章 Adapter(适配器)模式\r\n 第8章 扩展我们的视野\r\n 第9章 Bridge(桥接)模式\r\n 第10章 Abstract Factory(抽象工厂)模式\r\n第4篇 将所有这些放在一起:用模式的方法思考\r\n 第11章 专家如何进行设计\r\n 第12章 用模式解决CAD/CAM问题\r\n 第13章 设计模式的原则和策略\r\n第5篇 用设计模式处理变化\r\n 第14章 Strategy(策略)模式\r\n 第15章 Decorator(装饰)模式\r\n 第16章 Singleton(单件)模式和Double-Checked \r\n 第17章 Observer(观察者)模式\r\n 第18章 Template Method(模板方法)模式\r\n 第19章 Factory Method(工厂方法)模式\r\n 第20章 分析矩阵\r\n第6篇 终点和起点\r\n 第21章 从面向对象设计的新视角进行的设计模式回顾\r\n 第22章 推荐书目\r\n附录:词汇表
AlanShalloway的《设计模式精解》是一本很好的新书,其中有很多很好的应用模式的例子,尤其适合模式的初学者。
——John Vlissides
这本书(《设计模式精解》)最大的优点之一就是:它用类比的方式将概念解释得非常清楚,而很少使用程序代码。我正在做一套关于OOP和软件开发的录音教材,这本书讲述概念的方式对我非常有启发。
模式
Bruce Eckel
从去年9月开始翻译《设计模式精解》到现在,已有半年的时间。在这半年里,我很欣喜(同时也很讶异)地看到:在中国的软件开发者里面,有那么多的人爱好设计模式,有那么多的人关注着“模式”这个话题。模式在中国受重视的程度,远远超出了我当初的想象。
但是必须看到,随着“模式”这个词的日益流行,“人们对模式的混淆、惊惶和以讹传讹已经不是一点半点”。就像任何流行的东西一样,人们对模式也存在着各种各样的误解。有人说“模式就是某种编程技巧”,有人说“看了《设计模式》中的几个模式就足够了”,有人说“模式需要有某种工具或者方法学的支持才会有效”,有人说“模式可以保证软件的复用性”,还有一种听得最多的:“模式是针对面向对象设计和实现的”。喜欢模式的读者,你可曾意识到,这些都是对“模式”一词的误解呢?
还是模式
究竟什么是模式?按照ChristopherAlexander的定义,模式就是“在某一个场景下的问题解决方案”。但是,在JohnVlissides看来,连这种观点都是片面的,他认为,除了场景、问题和解决方案之外,一个模式还必须有三个要点:
1.可重复性。解决方案应该对应于外部的场景。
2.可传授性。一个解决方案应该可以移植到问题的不同情况中(绝大多数模式的可传 授性都建立在“约束”和“效果”的基础上)。
3.用来表示这个模式的名称。
而我们经常挂在嘴边的“模式”,常常就是指《设计模式》中的“设计模式”,或者再准确些讲,是“面向对象的设计模式”。顾名思义,它是在面向对象方法基础上发展起来的,它是用于设计阶段的,它是模式的子集,却不是模式的全部。模式是针对特定场景下的特定问题的可重复、可表达的解决方案。它不限于面向对象,不限于设计阶段,甚至不限于软件开发领域。这跟我们这本书没有太大关系,但是记住这一点是有必要的。
模式精解
《设计模式》早在1995年就面世了,中译本的出版也是在两三年以前。泰山北斗在前,还需要有这样一本设计模式的书籍吗?我说:需要。为什么会有那么多的误解?为什么会有那么多人抱怨“《设计模式》看不懂”?我想,因为这部经典太过精练又太重理论,再加上陌生的语言、失当的例子、过时的场景,使读者很难对其中的模式形成有感性的认识,更遑论理性的理解了。
请来想想这几个问题:首先,你真正了解面向对象吗?其次,你准确地知道什么是模式吗?最后,你知道应该如何使用设计模式吗?实际上,面对这三个问题,很少有人能够毫不犹豫地连答三个“Yes”。现在,你手上的这本书,就是为了“精解”这些疑惑的。用作者自己的话来说:
也许你使用一种面向对象或基于对象的语言已经有好几年了。但是,你是否已经知道,对象真正的威力不是继承而是“行为封装”?也许你对设计模式很感兴趣,并且发现关于设计模式的专著往往有点过于深奥。如果是这样,这本书便是为你准备的。
读过这本书之后,你将获得对十个最基本的设计模式的全面理解。你将明白:设计模式不是单独存在的,而是需要与其他设计模式协同工作以帮助你创建更健壮的应用程序。你将获得足够的基础以阅读设计模式的专著,并且——如果你愿意——可能发现新的这就是这本书存在的理由,也就是你读它的理由。
致谢
首先要感谢潘爱民老师。是他的一番教诲让我对模式产生了浓厚的兴趣,并最终决定硝译本书。
感谢UMLChina的站长潘家宇,他帮助我处理了本书前期的许多事务。他的自信一直感染着我,让我找到自我的价值。
感谢清华大学出版社的汤斌浩,他对我无休止的问题从来没有厌烦过。
感谢所有热心的读者,他们忍受了我拙劣的翻译,他们对本书的热切期待是我前进的动力。
。特别感谢我亲爱的女友马姗姗。当我处于困境中的时候,当我心情沮丧的时候,是她一直支持、鼓励我,照顾我的生活。没有她,就不可能有本书的完成。
最后,感谢所有为本书的翻译、制作、出版、发行做出贡献的人们。
祝读者在学习模式的路上走好。
Alan Shalloway是Net Objectives(美国一家咨询/培训公司)的创始人、CEO和资深顾问。计算机科学硕士,具有三十多年的软件开发经验,以及多年的指导和培训经验。他在设计模式、OOA,OOD及其灵活运用方面开设了许多课程,并在为其公司和客户开发高级软件方面作出了很大贡献。