著名建筑大師Alexander對(duì)模式的定義是:模式,簡(jiǎn)單而言,是出現(xiàn)在世界上的一個(gè)事物以及對(duì)應(yīng)的規(guī)則,這種規(guī)則告訴我們?nèi)绾稳ソ⒃撌挛铮裁磿r(shí)候應(yīng)該建立該事物。它是一個(gè)過(guò)程,也是一件事物,是對(duì)一個(gè)事物的描述以及對(duì)一個(gè)產(chǎn)生該事物的過(guò)程的描述。就是說(shuō),模式是一種規(guī)則之余,它還是一種現(xiàn)象、現(xiàn)狀和事物。

第二章 an Introduction to Patterns
一開始通過(guò)一個(gè)例子引入Observer Pattern,在這本書中,對(duì)模式的描述是用以下格式來(lái)進(jìn)行的:

Observer


在第三章,介紹了OO相關(guān)技術(shù)包括UML,其中提到了一個(gè)概念:在一個(gè)繼承體系中,良好的做法是越往上放越多的Code,而Data則放到越下層(子類or實(shí)現(xiàn)類)越好。文章是這樣解釋的:將公共代碼盡可能地放到繼承層次的上方這樣它可以被重用(和數(shù)據(jù)不同,在繼承的過(guò)程中,當(dāng)子類實(shí)例不需要使用的時(shí)候,代碼也不會(huì)有額外的cost),而數(shù)據(jù)元素則應(yīng)該放到越低越好,這樣你不會(huì)為不需使用的數(shù)據(jù)成員付出代價(jià)。如下圖:
DSC00093.JPG

第四章講的是一個(gè)電腦公司的銷售系統(tǒng),對(duì)配件的零售和各種搭配銷售,要求系統(tǒng)能夠統(tǒng)一對(duì)待,這里引入了Composite模式,這里不詳述,因?yàn)檫€是比較簡(jiǎn)單的。

第五章講的是Decorator模式,首先引入了一個(gè)漢堡店的系統(tǒng),介紹了組合爆炸的設(shè)計(jì),并引入Decorator,解決了這種問(wèn)題。

第六章講的是不同編程語(yǔ)言對(duì)模式的實(shí)現(xiàn)問(wèn)題,設(shè)計(jì)模式和習(xí)慣用法(idiom)比較起來(lái),后者是與特定語(yǔ)言相關(guān)的,而設(shè)計(jì)模式則是與語(yǔ)言無(wú)關(guān)的,這指的是支持OO的語(yǔ)言都支持設(shè)計(jì)模式,只不過(guò)實(shí)現(xiàn)起來(lái)的復(fù)雜程度各有不同,文章舉了一個(gè)例子用VB來(lái)實(shí)現(xiàn)State模式,再用Java來(lái)實(shí)現(xiàn),得出上述結(jié)論。

第七章第八章我就沒詳細(xì)看了,一是覺得這里的圖用的不是標(biāo)準(zhǔn)UML圖,看起來(lái)不太順眼,另一個(gè)則是內(nèi)容似乎沒什么特別的。書的最后三分之一都是附錄:代碼。

總的而言,這本書不算一本經(jīng)典的書,由于在圖書館借的,在還書之前翻了一下。下次打算看的模式書是《Head First Design Pattern》。不過(guò)得答辯之后才有時(shí)間了。