要想深入理解設計模式,就必須究其細節

Liuwei-Sunny發表於2013-09-22

       15年前,設計模式的經典之作《設計模式》出版之際,我在其封底寫下了這樣的評論:“這本書是對物件設計和開發實踐者的重大貢獻!你可有過為自己某個想法的命名冥思苦想的經歷?這事的確令人苦惱。《設計模式》解決了這個問題,它歸納並組織了物件設計、建立和使用領域中已被證明行之有效的各種思想,組織出了一個清晰的目錄。它對這些設計思想的規範命名,為團隊成員使用相同術語高效溝通創造了條件。

 

       我為這本書做出版預審時,曾建議Addison-Wesley考慮以活頁形式出版這本書,以方便將來更新或增加內容。現在回想起來,這個建議非常幼稚,我居然希望將所有的設計模式都規規矩矩塞進一本冊子!而這本書的四位作者,運用高度的抽象智慧,將眾多模式歸納為23種:迄今為止,所有設計模式都未能逃離這個範疇!

 

       在過去15年,我將《設計模式》指定為我的物件設計課的教科書,要求學生們將這本書放到自己的專業圖書架上。在課程中,大家每讀到一個模式,都要學習、討論,並將自己的想法分享給其他人。我希望學生們能真正理解這些模式的含義,並找到它們在解決自己實際工作中遇到的設計問題的潛在作用。要求學生們思考自己在什麼地方用到過這個模式,是否曾用其他的替代方法達到了同樣的設計目的。我努力讓我的學生們相信:要想真正深入理解一個設計模式,就必須探究其細節,並根據自己過去的經驗和當前設計需要,考慮清楚如何具體應用這個模式。比如Composite模式,最開始是依靠類來實現的——這本書寫作時,大規模使用介面的語言還沒出現。但時至今日,沒有問題,Composite仍然是一個有效的設計思想,只不過你有了更多的具體實現辦法。我想努力讓學生們明白,這本書是為那些真正喜歡思考,而不是隻想盲目地貼上複製程式碼的人準備的。同時,思想需要實踐的檢驗,並需根據時代和你使用的程式語言、框架作出正確選擇。

 

       面世15年後,《設計模式》對今天的軟體開發者仍有很大的吸引力。今年夏天,我在網上說我有幾本《設計模式》可以送人,幾小時內被一搶而空。這就是社會媒體的威力!不過可能更能解釋其原因的是這些設計模式本身。我珍藏了那些現在還津津樂道自己擁有這本經典的人發給我的郵件。

 

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

/Rebecca Wirfs-Brock /羅小平

 

作者簡介:Rebecca Wirfs-Brock物件技術大師,物件導向設計技術的先驅,職責驅動設計(Responsibility-Driven Design, RDD)方法創始人。她在1990年出版的”Designing Object-Oriented Software”是最早的物件導向設計書籍之一(該書中譯本《物件導向軟體設計經典》已於20039月由電子工業出版社出版),書中清晰闡述了“類”、“職責”、“協作”這些我們今天耳熟能詳的概念,提出職責驅動設計的方法。她在Object Design: Roles, Responsibilities, and Collaborations (Addison Wesley - November, 2002)【物件設計:角色、職責和協作】一書中很好地融合了其對CRC卡、協作(Collaborations)和靈活性(Flexibility)這些主題的見解。

   

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

 

相關文章