設計模式思想還遠未廣泛應用
1994年,在波特蘭舉行的OOPSLA (Object Oriented Programming, Systems, Languages and Applications)大會上,Addison-Wesley出版社展示了一本新書——《設計模式》。此後15年,它以各種語言在全球發行,成為總銷量達50萬的三本技術圖書的第一本。此書的四位作者——John Vlissides, Ralph Johnson, Richard Helm和Erich Gamma,後來被合稱為“The Gang of Four”(四人幫),簡稱為“The GoF”:“GoF”則成為此書的代名詞。
GoF本身沒有任何新的內容。其真正貢獻在於:快刀斬亂麻,對長期存在、非常混亂的各種設計方法加以歸納、命名、定義和編目,清晰列出了一個包含23種設計模式的目錄,對設計模式知識在此後15年的快速、規範傳播起到了重要作用。
我個人對三個模式印象最深。
第一個是Factory。Factory是一個物件,負責生成指定Product的例項。和Factory概念相關的模式不止一個,例如Factory Method和Abstract Factory。利用Factory生成物件例項,可以隱藏物件建立的細節,可以規避顯式構造物件方法的一些侷限。
第二個是Iterator。在被Java社群引入後,這個思想變得無所不在。物件通過提供Iterator,可以消除對其內部資料組織方法的依賴。鑑於系統規模的日益擴大,我認為Iterator模式保證物件自身完整性的作用還沒有得到足夠重視。
第三個是Visitor。多年來,我對這個備受爭議的模式情有獨鍾。Visitor或許不是模式大家庭中最難懂的成員,但我發現沒有任何人(包括我自己),能在實際用過前真正理解它。只有真正用過,它包含的設計思想(無論你認為是好是壞)才會變為我們終身所有。
這15年來,儘管又有十幾種模式被不斷總結出來,但究其實質,無一不是上述23種模式的衍生和變種。就像現在天文學家為古代先賢繪製的星座圖上的星座新增斑斕的顏色,不過是證明了這些早已存在的星座的美麗。
在物件導向領域,我們苦苦追求的重用,現在看來就像失敗的上帝。正如太空梭從未擁有設計師承諾的那種非凡再利用能力一樣,軟體庫、框架和元件,也從來沒有像很多人想象和希望的那樣,真正成為軟體重用的基石。倒是設計本身、設計思想、設計模式實現了重用。這15年來,我們在軟體開發中的關注重點,逐漸從程式語言、框架轉移到了如何用這些模式表達自己思想上來。
但時至今日,設計模式思想還遠未得到廣泛、深入應用。這些模式的總結和提出,只是證明我們有可能比過去做得更好,而在實際工作中,各種不好不壞的程式碼仍在大量產生,佔據著主流。因此在未來,我們還要不斷與刀耕火種、用鋤頭搬移火山的落後生產方式持續鬥爭。而鬥爭的最終結果,現在還不可預知。
【本文轉自《程式設計師》2009年12月刊 特別專題:設計模式15年】
文/Brian Foote 譯/羅小平
作者簡介:Brian Foote,《Pattern Languages of Program Design》系列叢書作者,研究領域包括物件導向程式設計,設計,重用,語言,框架,軟體架構,模式,反射,元架構,軟體演化等。
【作者:劉偉 http://blog.csdn.net/lovelion】
相關文章
- 應用最廣泛的模式——工廠方法模式模式
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- 大資料應用廣泛大資料
- API在哪些領域應用廣泛API
- 如何通俗理解設計模式及其思想?設計模式
- 12.享元模式設計思想模式
- 02.工廠模式設計思想模式
- 15.模版模式設計思想模式
- 04.原型模式設計思想原型模式
- 10.橋接模式設計思想橋接模式
- 09.外觀模式設計思想模式
- 11.組合模式設計思想模式
- 01.單例模式設計思想單例模式
- 設計模式 | 策略模式及典型應用設計模式
- 設計模式應用舉例設計模式
- javascript設計模式與應用JavaScript設計模式
- Apache Doris設計思想介紹與應用場景Apache
- 架構設計思想-微服務架構設計模式架構微服務設計模式
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- [譯] 如何讓你的設計系統被廣泛採用
- 設計模式 | 中介者模式及典型應用設計模式
- 設計模式 | 外觀模式及典型應用設計模式
- 設計模式 | 模板方法模式及典型應用設計模式
- 設計模式 | 組合模式及典型應用設計模式
- 設計模式 | 享元模式及典型應用設計模式
- 07.介面卡模式設計思想模式
- 08.裝飾者模式設計思想模式
- 乾元通5G遠端無人駕駛工程機械廣泛應用
- 設計模式——從工廠方法模式到 IOC/DI思想設計模式
- 應用最廣的模式——單例模式模式單例
- Unity應用架構設計(12)——AOP思想的實踐Unity應用架構
- 設計模式 | 觀察者模式及典型應用設計模式
- 設計模式 | 備忘錄模式及典型應用設計模式
- 設計模式在 TypeScript 中的應用 – 策略模式設計模式TypeScript
- 設計模式 | 責任鏈模式及典型應用設計模式
- 設計模式 | 介面卡模式及典型應用設計模式
- 【技巧篇】JavaScript設計模式之策略模式應用JavaScript設計模式
- 設計模式 | 裝飾者模式及典型應用設計模式
- 應用最為廣泛的電商網站網站