設計模式入門-物件導向設計的新觀念
 (Design Patterns Explained)

 Alan Shalloway、James R. Trott/著,
 鍾永哲/譯
 培生出版
 售價:420元


成熟的產業,應該有很多經典的設計、廣為流傳的想法、共通的價值。由於資訊硬體突飛猛進,資訊應用面快速深入所有環節,導致需求多樣化與設計複雜化。在開發與使用軟體時,我們期待各種問題的最佳解答。

十多年前,Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides(由於太有名了,一般稱之為四人幫-Gang of Four,GoF)仿效建築師Christopher Alexander 為建築找模式(Pattern),讓「設計」這種抽象行為,也有可效法的準則,GoF則為軟體設計找模式。

除去資源、經費、時程等外在因素,在評估團隊或個人是否可以成事時,往往以知識、技能和實踐力為考量點。知識代表著廣度與深度,是解決問題的潛能;技能是駕御平臺、工具、程式語言等實質技術的熟悉度;實踐力則看人格特質了。而模式可算是平日培養設計能力的基本知識,當你對特殊問題能提出適當的解法時,就擁有技能了。

初探物件導向與設計模式
在此介紹一本好書:《設計模式入門》,此書並非像坊間其他介紹設計模式的書,以某種程式語言,如 C++、Java、C#、VB.NET 等,條列 GoF 提出的 23 種設計模式的寫法,作者僅以簡單的例子描述如何應用幾個常見的設計模式。

本書的重點在於物件導向分析設計的入門與模式的應用,因此在章節設計上,先穿插物件導向的特徵,再以數個模式搭配說明。

模式可以幫我們提升思考的層級,作者在書中舉了一個例子,當兩個木匠討論如何將兩塊木板90度接合時,其中一位木匠問到:「是要採用『楔形榫頭接口』,還是『45 度角斜接面』?」

楔形榫頭代表兩塊木板的周緣皆切割成許多小的鋸齒,像拼圖一般接合兩塊木板,這代表了美觀、耐用與高品質,但成本也較高。而 45度角斜接面僅是將兩塊木板的周緣各磨出45度的斜切面,這隱含了速成、簡陋但剛好合用的用意。而木匠以他們自己所熟知的模式在討論時,有兩個層次,一是真實的設計方式;另一個層次代表著品質與成本。而模式就是解決問題的經驗,並可幫助提升思考的層次。

書中描述模式的方式是先提出問題,並直觀地給予解答,而後再描述該解答的不足,接著套用模式重新設計解法,並輔之以程式碼和評析,最後重點提示並做總結,反覆地描述以加深印象。

本書是以Java和C++當作解說用的語言,但僅是點到為止,當作解說意念的一部分,畢竟模式的實作偏於抽象,僅是UML(United Modeling Language)的類別圖(Class Diagram)呈現關聯,會令不熟悉UML的程式設計師難以揣摩,程式碼則可以讓我們較為踏實地感受其論述。

閱讀建議
討論設計的書,向來都不好讀,一則是抽象的東西不容易吸收,因為未親身經歷,很難領會其義;二則是其論述不一定在工作中立刻用得上,不如技術類的工具書,能夠直接對應相關操作或撰寫程式的問題。這類書適合有讀書習慣、且深思熟慮的讀者,面對問題時不僅問「How」如何去解決?更有興趣研究「What」和 「Why」。然而,要能靜得下來、坐得住,這往往要靠時間焠鍊。享受閱讀的豁然開朗之樂前,需經驗養成。

本書定位為入門書,一開始便討論物件導向的基本特色,若不熟悉物件導向分析,或僅稍有認識的讀者,都可以透過第一章先了解基本名詞的定義與優點,以及第二章的UML語言簡介。其後便循序漸進地展開越來越複雜的設計,先後以 CAD/CAM和銷售系統e-tail為範例,解釋結構性、行為性和創造性3類的模式。你可逐章閱讀,賞析各個模式的特性。

本書所介紹的模式不多,在相關章節以實例說明該模式的用途後,皆會以模式語言(Pattern Language)或模式範本(template)做個重點提示。

也就是以目的、問題、解法、參與者與合作者、結果、實作等面向,描述該模式。並附上對GoF 原著的參照頁數。建議你有了概念後,透過GoF原著的參照頁數來加深對該模式的認知。

《作者簡介》胡百敬
現任職恆逸資訊教育訓練處資深講師,聯合報系、睿智資訊與臺灣微軟技術顧問。著有《SQL Server 2005資料庫開發聖經》等書,並為專欄作家。

熱門新聞

Advertisement