揭開設計模式的秘辛:設計模式 第1 3/4版 | 拾書所

揭開設計模式的秘辛:設計模式 第1 3/4版

$ 309 元 原價 390
~~~~~~~大師已逝,墨跡留香~~~~~~~

學習設計模式的人,一定聽過《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︰大學(甚或科大)不教設計模式,實在是令人難以理解?!
── 博碩文化 總編輯 陳錦輝

大師已逝,墨跡留香
── 網路留言

目錄
關於中文書名
推薦序
譯者序
審校序
前言

Chapter 1 介紹
1.1 對模式的十大誤解
 誤解1:「模式就是在一種場合下,對某個問題的一個解決方案。」
 誤解2:「模式只是行話、規則、程式設計技巧、資料結構……」
 誤解3:「看到了冰山的一角,就等於看到了整座冰山。」
 誤解4:「模式需要工具或方法的支援才能生效。」
 誤解5:「模式可以保證軟體的耐用、更高的生產率、世界和平,等等。」
 誤解6:「模式可以『產生』整體架構。」
 誤解7:「模式只用在『物件導向』設計或實作。」
 誤解8:「沒有證據顯示模式對任何人有幫助。」
 誤解9:「模式族群是一群由精英分子組成的小幫派。」
 誤解10:「模式族群是為自己服務的,甚至是不懷好意的。」
1.2 觀察

Chapter 2 運用模式進行設計
2.1 基礎
2.2 孤兒、孤兒的收養以及替代品
2.3 「但是應該如何4 3 4 1 ; &# 2 0 8 3 7 ; &# 2 6 3 6 7 ; &# 2 0 1 9 5 ; &# 2 1 6 9 7 ; &# 2 1 6 0 2 ; &# 6 5 3 1 1 ; &# 1 2 3 0 1 ; &# 3 2 ; b r / > &# 5 0 ; &# 4 6 ; &# 5 2 ; &# 3 2 ; &# 2 3 3 8 4 ; &# 2 1 4 6 2 ; &# 2 7 4 0 2 ; &# 3 8 4 8 0 ; b r / > &# 5 0 ; &# 4 6 ; &# 5 3 ; &# 3 2 ; &# 3 8 3 6 4 ; &# 2 6 0 4 4 ; &# 8 6 ; &# 7 3 ; &# 8 3 ; &# 7 3 ; &# 8 4 ; &# 7 9 ; &# 8 2 ; &# 3 2 ; &# 3 0 3 4 0 ; &# 1 9 9 6 8 ; &# 2 0 1 2 3 ; &# 3 5 6 8 6 ; &# 2 1 5 7 8 ; &# 3 2 ; b r / > &# 5 0 ; &# 4 6 ; &# 5 4 ; &# 3 2 ; &# 2 1 9 3 4 ; &# 2 0 3 5 1 ; &# 2 9 9 9 2 ; &# 3 2 7 7 3 ; &# 2 7 2 8 4 ; &# 2 6 6 9 6 ; &# 3 1 9 9 5 ; &# 3 2 1 1 3 ; &# 3 0 3 4 0 ; &# 2 0 4 4 5 ; &# 3 5 7 0 3 ; &# 3 2 ; b r / > &# 5 0 ; &# 4 6 ; &# 5 5 ; &# 3 2 ; &# 2 2 8 1 0 ; &# 2 0 3 5 1 ; &# 2 9 9 9 2 ; &# 3 2 7 7 3 ; &# 2 7 2 8 4 ; &# 2 6 6 9 6 ; &# 3 1 9 9 5 ; &# 3 2 1 1 3 ; &# 3 0 3 4 0 ; &# 2 0 4 4 5 ; &# 3 5 7 0 3 ; &# 3 2 ; b r / > &# 5 0 ; &# 4 6 ; &# 5 6 ; &# 3 2 ; &# 2 3 5 6 7 ; &# 3 2 0 8 0 ; &# 3 2 ; b r / > b r / > &# 6 7 ; &# 1 0 4 ; &# 9 7 ; &# 1 1 2 ; &# 1 1 6 ; &# 1 0 1 ; &# 1 1 4 ; &# 3 2 ; &# 5 1 ; &# 3 2 ; &# 2 0 0 2 7 ; &# 3 9 6 3 6 ; &# 3 3 2 8 7 ; &# 3 5 7 2 2 ; &# 3 9 6 3 6 ; b r / > &# 5 1 ; &# 4 6 ; &# 4 9 ; &# 3 2 ; &# 3 2 0 6 6 ; &# 2 7 4 9 0 ; &# 8 3 ; &# 7 3 ; &# 7 8 ; &# 7 1 ; &# 7 6 ; &# 6 9 ; &# 8 4 ; &# 7 9 ; &# 7 8 ; &# 3 2 ; b r / > &# 5 1 ; &# 4 6 ; &# 5 0 ; &# 3 2 ; &# 7 9 ; &# 6 6 ; &# 8 3 ; &# 6 9 ; &# 8 2 ; &# 8 6 ; &# 6 9 ; &# 8 2 ; &# 3 2 ; &# 3 0 3 4 0 ; &# 2 9 0 3 3 ; &# 2 4 8 1 7 ; b r / > &# 5 1 ; &# 4 6 ; &# 5 1 ; &# 3 2 ; &# 3 7 3 2 5 ; &# 2 8 3 3 1 ; &# 8 6 ; &# 7 3 ; &# 8 3 ; &# 7 3 ; &# 8 4 ; &# 7 9 ; &# 8 2 ; &# 3 2 ; b r / > &# 5 1 ; &# 4 6 ; &# 5 2 ; &# 3 2 ; &# 7 1 ; &# 6 9 ; &# 7 8 ; &# 6 9 ; &# 8 2 ; &# 6 5 ; &# 8 4 ; &# 7 3 ; &# 7 9 ; &# 7 8 ; &# 3 2 ; &# 7 1 ; &# 6 5 ; &# 8 0 ; &# 3 2 ; b r / > &# 1 2 2 8 8 ; &# 5 1 ; &# 4 6 ; &# 5 2 ; &# 4 6 ; &# 4 9 ; &# 3 2 ; &# 2 6 1 7 8 ; &# 2 7 2 3 1 ; &# 3 2 ; b r / > &# 1 2 2 8 8 ; &# 5 1 ; &# 4 6 ; &# 5 2 ; &# 4 6 ; &# 5 0 ; &# 3 2 ; &# 3 2 0 8 0 ; &# 2 7 0 8 3 ; &am

Brand Slider