著名建筑大師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》。不過得答辯之后才有時間了。