設計模式思想還遠未廣泛應用

Liuwei-Sunny發表於2013-09-22

        1994年,在波特蘭舉行的OOPSLA (Object Oriented Programming, Systems, Languages and Applications)大會上,Addison-Wesley出版社展示了一本新書——《設計模式》。此後15年,它以各種語言在全球發行,成為總銷量達50萬的三本技術圖書的第一本。此書的四位作者——John Vlissides, Ralph Johnson, Richard HelmErich Gamma,後來被合稱為“The Gang of Four”(四人幫),簡稱為“The GoF”:“GoF”則成為此書的代名詞。

         GoF本身沒有任何新的內容。其真正貢獻在於:快刀斬亂麻,對長期存在、非常混亂的各種設計方法加以歸納、命名、定義和編目,清晰列出了一個包含23種設計模式的目錄,對設計模式知識在此後15年的快速、規範傳播起到了重要作用。

         我個人對三個模式印象最深。

       第一個是FactoryFactory是一個物件,負責生成指定Product的例項。和Factory概念相關的模式不止一個,例如Factory MethodAbstract Factory。利用Factory生成物件例項,可以隱藏物件建立的細節,可以規避顯式構造物件方法的一些侷限。

         第二個是Iterator在被Java社群引入後,這個思想變得無所不在。物件通過提供Iterator,可以消除對其內部資料組織方法的依賴。鑑於系統規模的日益擴大,我認為Iterator模式保證物件自身完整性的作用還沒有得到足夠重視。

         第三個是Visitor多年來,我對這個備受爭議的模式情有獨鍾。Visitor或許不是模式大家庭中最難懂的成員,但我發現沒有任何人(包括我自己),能在實際用過前真正理解它。只有真正用過,它包含的設計思想(無論你認為是好是壞)才會變為我們終身所有。

       這15年來,儘管又有十幾種模式被不斷總結出來,但究其實質,無一不是上述23種模式的衍生和變種。就像現在天文學家為古代先賢繪製的星座圖上的星座新增斑斕的顏色,不過是證明了這些早已存在的星座的美麗。

       在物件導向領域,我們苦苦追求的重用,現在看來就像失敗的上帝。正如太空梭從未擁有設計師承諾的那種非凡再利用能力一樣,軟體庫、框架和元件,也從來沒有像很多人想象和希望的那樣,真正成為軟體重用的基石。倒是設計本身、設計思想、設計模式實現了重用。這15年來,我們在軟體開發中的關注重點,逐漸從程式語言、框架轉移到了如何用這些模式表達自己思想上來。

       但時至今日,設計模式思想還遠未得到廣泛、深入應用。這些模式的總結和提出,只是證明我們有可能比過去做得更好,而在實際工作中,各種不好不壞的程式碼仍在大量產生,佔據著主流。因此在未來,我們還要不斷與刀耕火種、用鋤頭搬移火山的落後生產方式持續鬥爭。而鬥爭的最終結果,現在還不可預知。

 

【本文轉自《程式設計師》2009年12月刊 特別專題:設計模式15年 

/Brian Foote  /羅小平

 

作者簡介:Brian Foote,Pattern Languages of Program Design》系列叢書作者,研究領域包括物件導向程式設計,設計,重用,語言,框架,軟體架構,模式,反射,元架構,軟體演化等。

 

主頁:http://www.laputan.org/

 

【作者:劉偉   http://blog.csdn.net/lovelion

相關文章