模式化的過程是把問題抽象化,在忽略掉不重要的細節後,發現問題的一般性本質,並找到普通適用的解決方案的過程。
模式所描述的問題及問題的答案都應當是具有代表性的問題和問題的答案。所謂代表性,就是說它們以不同的形式重複出現。
模式的研究起源於建築工程大師Alerander,在他的著作《建築的永恒之道》裡,他描述了一些他認為是永恒的、適合任何工程學科的設計原則,他的原則建立在三個基本概念的基礎上:質、門、道。
質:質或稱無名的質處在核心的地位上。所有的生物、有用之物均包含自由性,完整性,完備性,舒適性,和諧性,可居住性,持久性,開發性,彈性,可變性,以及可塑性。當人們想認識質的時候,就會將其局限到不同的地區中,這時“無名的質”就變成了一些可定義的質,也就是上面說的包括完整性,完備性等等。質意味著軟體的內在屬性不僅僅存在於這個軟體當中,而且存在於和其他軟體以及以及電腦外部世界(特別是使用者)的互動之中。質在映射到人腦之前是“無名”的,而映射到人腦之後便產生了軟體需求的可變性,軟體的可用性,以及系統的可擴充性、靈活性和可插入性等等。
門:門是通向質的管道。“門”是通過一個普遍的模式語言來體現的,這個模式語言使設計師可以建立多種形式的設計,以滿足多方面的需求。門對於軟體開發來說就相當於原始碼,代碼的組合形式的反覆出現,就是模式。
道:道又稱永恒的道,利用“道”,從“門”演化到“質”的過程,就是把一定的特定的模式按照一定的順序應用到系統設計上的循序漸進的過程。從“門”轉換到“質”的過程,是一個先整體後部分,整體通過分裂來產生部分。任何工程的發展過程都是通過追尋“道”,通過“門”到達“質”的過程。
軟體設計必須從軟體的整體屬性出發也就是從無名的質出發,通過分析得到可定義的質,也就是軟體的模組劃分,使用者介面,類及其方法等等。軟體設計必須通過對“道”的追逐,通過“門”才能帶到“質”。也就是說軟體設計時必須通過對學習,掌握設計模式,才能做出符合要求的產品。而這一過程我們可以稱之為“形而上學”。
ps:作者對於哲學以及道教乃至物理學的理解都已經到了相當的高度,縱使我不停的揣摩研究還是有很多不能理解之處。但這不影響我繼續把這本書讀下去,因為從這開始,書本的內容開始進入軟體範疇,這一章可以留待以後慢慢揣摩。