確實,很難找到一個令人滿意的定義!澳J接懻摗编]件列表(patterns-discussion@cs.uiuc.edu)上正在進行的討論也證明了這一點。難以定義的一大原因是:模式既是一個事物,也是對類似事物的描述。要區分這兩者,有一種辦法:“模式”這個術語只用來指代模式的描述,同時用“模式實例”來指代模式的具體應用。
但是,術語的定義很可能是白費力氣,因為一個定義可能對一個人(比如程序員)有意義,但是對另一個人(比如只能看到書面材料的項目主管)卻毫無意義。當然,我不打算在這里提出什么最終定義。但是,任何對模式要素的規定,除了必須包括問題、解決方案和場景之外,都必須提及可重復性、可傳授性和名稱。
誤解之二:“模式就是行話、規則、編程技巧、數據結構……”
我通常把這些誤解統稱為“蔑視”。如果你試圖把某些不熟悉的東西簡化為熟悉的東西,產生這種想法是很自然的,尤其是當你沒有特別的興趣去鉆研這些不熟悉的東西時。另外,某些人經常拿新瓶裝陳酒,然后大吹“創新”、“革命”一類的口號。保持警惕也是好的。
但是,這種蔑視通常不是來自親身體驗,而是來自膚淺的認識和一點點冷嘲熱諷。而且,沒有什么東西是真正“全新”的。人們的腦海中一直都存在著各種各樣的模式,只不過我們現在剛開始為模式命名,并將模式記錄下來。
來逐個說明這些看法:的確存在著模式的行話,例如“模式”這個詞,例如“約束”,例如Alexander的“無名質量”,等等。但是模式是不能簡化為行話的。與其他計算機科學領域相比,模式引入的新術語實在是少得可憐。對于聽眾來說,好的模式本來就很容易接受。在說明一個模式的時候也許有必要引用問題領域的行話,但是幾乎沒有必要使用什么特定于模式領域的術語。