《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John
Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为“四人组(Gang of
Four)”,而这本书也就被称为“四人组(或 GoF)”书。
在《设计模式》这本书的最大部分是一个目录,该目录列举并描述了 23 种设计模式。
另外,近来这一清单又增加了一些类别,最重要的是使涵盖范围扩展到更具体的问题类型。
例如,Mark Grand 在 Patterns in Java: A Catalog of Reusable Design Patterns
Illustrated with UML(即后述《模式 Java 版》一书)中增加了解决涉及诸如并发等问
题的模式,而由 Deepak Alur、John Crupi 和 Dan Malks 合著的 Core J2EE
Patterns: Best Practices and Design Strategies 一书中主要关注使用 Java 2 企业
技术的多层应用程序上的模式。
对软件设计模式的研究造就了一本可能是面向对象设计方面最有影响的书籍:《设计
模式》。
GOF 的设计模式是一座"桥"
就 Java 语言体系来说,GOF 的设计模式是 Java 基础知识和 J2EE 框架知识之间一座
隐性的"桥"。
会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java
中接口或抽象类的应用不是很多,大家经常以那些技术只适合大型项目 为由,避开或忽
略它们,实际中,Java 的接口或抽象类是真正体现 Java 思想的核心所在,这些你都将在
GoF 的设计模式里领略到它们变幻无穷的魔力。
GoF 的设计模式表面上好像也是一种具体的"技术",而且新的设计模式不断在出现,
设计模式自有其自己的发展轨道,而这些好像和 J2EE .Net 等技术也无关!
实 际上,GoF 的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口
或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象 类的应用,从
而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复向你强调一个
宗旨:要让你的程序尽可能的可重用。
这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是要寻
找出不变的东西,并将它和变化的东西分离开来,这需要非常的智慧和经验。
而 GoF 的设计模式是在这方面开始探索的一块里程碑。
J2EE 等属于一种框架软件,什么是框架软件?它不同于我们以前接触的 Java API 等,
那些属于 Toolkist(工具箱),它不再被动的被使用,被调用,而是深刻的介入到一个领域
中去,J2EE 等框架软件设计的目的是将一个领域 中不变的东西先定义好,比如整体结构
和一些主要职责(如数据库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领
域中具体应用产生的具体不同的变化需求,而这些变化东西就是 J2EE 程序员所要做的。