著名建筑大师Alexander对模式的定义是:模式,简单而言,是出现在世界上的一个事物以及对应的规则,这种规则告诉我们如何去建立该事物,什么时候应该建立该事物。它是一个过程,也是一件事物,是对一个事物的描述以及对一个产生该事物的过程的描述。就是说,模式是一种规则之余,它还是一种现象、现状和事物。

第二章 an Introduction to Patterns
一开始通过一个例子引入Observer Pattern,在这本书中,对模式的描述是用以下格式来进行的:

Observer


在第三章,介绍了OO相关技术包括UML,其中提到了一个概念:在一个继承体系中,良好的做法是越往上放越多的Code,而Data则放到越下层(子类or实现类)越好。文章是这样解释的:将公共代码尽可能地放到继承层次的上方这样它可以被重用(和数据不同,在继承的过程中,当子类实例不需要使用的时候,代码也不会有额外的cost),而数据元素则应该放到越低越好,这样你不会为不需使用的数据成员付出代价。如下图:
DSC00093.JPG

第四章讲的是一个电脑公司的销售系统,对配件的零售和各种搭配销售,要求系统能够统一对待,这里引入了Composite模式,这里不详述,因为还是比较简单的。

第五章讲的是Decorator模式,首先引入了一个汉堡店的系统,介绍了组合爆炸的设计,并引入Decorator,解决了这种问题。

第六章讲的是不同编程语言对模式的实现问题,设计模式和习惯用法(idiom)比较起来,后者是与特定语言相关的,而设计模式则是与语言无关的,这指的是支持OO的语言都支持设计模式,只不过实现起来的复杂程度各有不同,文章举了一个例子用VB来实现State模式,再用Java来实现,得出上述结论。

第七章第八章我就没详细看了,一是觉得这里的图用的不是标准UML图,看起来不太顺眼,另一个则是内容似乎没什么特别的。书的最后三分之一都是附录:代码。

总的而言,这本书不算一本经典的书,由于在图书馆借的,在还书之前翻了一下。下次打算看的模式书是《Head First Design Pattern》。不过得答辩之后才有时间了。