设计模式(Java版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 设计模式简史

设计模式的研究起源于建筑工程设计大师Christopher Alexander的关于城市规划和建筑设计的著作。尽管他的著作是针对城市规划和建筑设计的,但是其观点实际上适用于所有工程设计领域,包括软件开发设计领域。Alexander在其著作中指出,使用现在的设计方法所设计出的建筑物,不能满足所有工程设计的基本目的:改善人类的条件。Alexander想要发明的建筑结构,是能使人类在舒适和生活质量上受惠的建筑结构。他得出的结论是,设计师必须不断努力,以创造出更加适合所有住户、用户和他们的社区的结构,从而满足他们的需要。同样软件开发中的设计模式也是不断进行研究、创新,以更加适合软件工程的各个方面。

设计模式在软件行业中的应用可以追溯到1987年。Ward Cunningham和Kent Beck在一起用Smalltalk做设计用户界面的工作,他们决定使用Alexander的理论发展出一个有五个模式的语言来指导 Smalltalk 的新手,因此他们写了一篇“Using Pattern Languages for Object-Oriented Programs(使用模式语言做面向对象的程序)”的论文。此后不久,James O. Coplien开始搜集C++语言的成例(成例也可认为是一种设计模式,更偏重于编码技巧),这些C++成例发表在1991年出版的《Advanced C++ Programming Styles and Idioms(高级C++编程风格和成例)》一书中。

1990年到1992年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides四个人(常被称为Gang of Four、GoF或“四人帮”,如图1-1所示),开始了搜集模式的工作。1993年8月,Kent Beck和Grady Booch主持了在美国科罗拉多的山区度假村召开的第一次关于模式的会议,模式研究的主要人物都参加了这次会议,包括James O. Coplien、Doug Lea、Desmond D'Souze、Norm Kerth、Wolfgang Pree等。

1995年GoF的“Design Patterns: Elements of Reusable Object-Oriented Software”(《设计模式:可复用面向对象软件的基础》)出版。该书第一次将设计模式提升到理论高度,并将之规范化,同时提出了 23 种基本设计模式。此书发表之后,带动了设计模式的研究热潮,被确定为模式结构的数目也呈爆炸性增长。时至今日,在可复用面向对象软件的发展过程中,新的设计模式仍然不断出现。

图1-1 GoF的四个成员