~~~~~~~大師已逝,墨跡留香~~~~~~~
學習設計模式的人,一定聽過《Design Patterns: Elements of Reusable Object-Oriented Software》這本書,俗稱GoF的《設計模式》或GoF的23個設計模式。早期就開始學習設計模式的前輩也大多讀過那本書。
GoF的設計模式只有23個嗎?其實不只23個,在該書出版之時,有接近半打的模式未能被放入該書當中,原因有很多,例如在當年尚未取得兩個以上的大型專案實例來驗證可行性、尚未取得四人的共識、與其他模式之間的分界尚不明朗等等,都可能會導致一些模式未被納入。
該書的遺珠之憾是那些模式呢?在本書中,作者(GoF的四位成員之一)補充了兩個模式,其中的GENERATION GAP模式已經獲得共識,只是在當年的實例不夠多,但現在看來,實在是稀鬆平常,到處都可以看到開發環境或框架採用了這個模式。
至於另一個TYPED MESSAGE模式,在規劃初期是叫做MULTICAST模式,這個模式初期只取得其中三人的同意。藉著這個尚未取得共識的模式,作者揭露了當初在撰寫《Design Patterns: Elements of Reusable Object-Oriented Software》時,四位作者之間對於模式的討論方式,讓讀者得以一窺大師們的討論、思想、以及對軟體設計的習慣。並且在說服反對者的最後關頭,還加入了另一位大師《Clean Code》作者Robert C. Martin(Bob大叔)的支援。如果您仔細閱讀本書第四章及第五章,會發現原來要成為一個新模式真是不簡單啊!那些面世的模式全都是大師們的心血結晶,無價的經驗寶藏。
早期,有些人會批評《Design Patterns》不適合作為學習設計模式的第一本書,或許是因為有些人看的、寫的專案不夠多,所以無法體會其中的奧妙。後來,由於設計模式被大多數高級軟體工程師接受了,因此寫了非常多的相關書籍來介紹設計模式,漸漸地,設計模式不再那麼令人敬畏,也成為了軟體設計的顯學。而這類比較容易理解的書籍,通常都是採用最適合初階讀者的寫法,也就是舉出實例來說明模式。而且舉的例子越是程式設計師理解的例子,就越能使程式設計師學會設計模式並加以活用。
有些書籍,只針對每個模式舉出一個例子,但無法找出一些好例子,可同時應用多個模式來完成同一個例子中不同的功能要求,這樣的寫作法,常常誤導了讀者,違背了設計模式的目的。換言之,一招半式是要如何走江湖呢?本書有別於那些書籍,在本書第二章中,作者以程式設計師最能理解的檔案系統為例,實際示範如何應用六個模式來解決檔案系統不同的功能需求,這六個模式之間的相互合作方式,讓人眼睛為之一亮。讚嘆道︰「原來設計模式是這樣用的啊!」
許多讀者都在期待《設計模式》的第二版,而第二版會是什麼樣子呢?這很難說(也可能不會有第二版了),但至少可以肯定的是,本書作者對於《設計模式》第二版所能做出的貢獻,都已經寫在這本書當中了。
本書讚譽
本書將幫你理解如何將《設計模式》──其實是任何關於設計模式的書籍──當作一本珍貴的指南,而不是一些累贅的規定。── 朗訊科技公司,貝爾實驗室 James O. Coplien
這本技術書的文風非常吸引人,我從未讀過這麼精彩的技術書。John真的已經爐火純青、游刃有餘,他對技術主題的把握如此堅實、精準又引人入勝。── 西門子公司 Frank Buschmann
對於套用設計模式有點經驗的程式設計師來說,遇到問題該採用這個模式還是那個模式,常常陷入難以抉擇的問題,看起來這樣也可以,那樣也可以,如果您也曾有過如此的經歷,那麼您一定要好好看完這本書,相信對您會非常助益。
PS︰大學(甚或科大)不教設計模式,實在是令人難以理解?!── 博碩文化 總編輯 陳錦輝
大師已逝,墨跡留香── 網路留言