玩轉設計模式——設計模式之禪

songshu發表於2010-02-25
玩轉設計模式——《設計模式之禪》(設計模式領域又一里程之作)

如果說“四人幫”的《設計模式》是設計模式領域的“聖經”,那麼之後出版的各種關於設計模式的書都可稱之為“聖經”的“註釋版”或“聖經的故事”。《設計模式之禪》是得道者對“聖經”的“禪悟”,它既不像“聖經”那樣因為惜字如金、字字珠璣而深奧、晦澀和難懂,又比“聖經”的“註釋版”更深刻和全面、更通俗和生動、更接近開發者遇到的實踐場景,更具指導性。本書兼收幷蓄、博採眾長,也許是設計模式領域裡的下一個里程碑之作。
設計模式之禪》共分為四部分,第一部分從原理的角度闡述了物件導向程式設計的6大原則;第二部生動地講解和剖析了23種常見的設計模式,並進行了擴充套件,通俗易懂,趣味性極強而又緊扣模式的核心;第三部分對各種相關聯的設計模式進行了深入分析和比較,旨在闡明各種設計模式比較理想的應用場景和它們之間的區別;第四部分探討了設計模式的混編,講解了如何在實際開發中將各種設計模式混合起來使用,以發揮設計模式的最大效用。最後,本書還附有一份設計模式彩圖,可以裁剪,便於參考。

贊 譽
聰明的人,把房子蓋在磐石上;無知的人,把房子蓋在沙土上。對於開發者而言,設計模式就是那堅固的磐石。《設計模式之禪》是設計模式領域難得一見的佳作,它用一種創新的方式對物件導向的設計原則和設計模式的要義進行了全新的闡釋。對於所有Java開發者而言,無論你是初窺門徑,還是深諳其道,本書都值得你閱讀並收藏。
—Java開發者社群

設計模式之禪》不僅從開發者的角度對設計模式進行了獨到而具有創意性的講解,而且還從架構師的角度深刻地分析了設計模式在軟體架構中的重要性。設計模式是架構師必備的的技能之一,它的思想和原則能指導架構師設計出更優秀的軟體架構。強烈推薦所有架構師閱讀本書。
—架構師社群

很多初學者都抱怨設計模式的抽象和深奧,對於他們來說,《設計模式之禪》的出版不啻是一種福音!作者利用詼諧的語言和生動的敘述方式,結合當前國內讀者熟知和易於理解的故事和開發場景,對設計模式進行了獨特而全面的闡述,大大降低了設計模式的學習曲線,實在不可多得!
—計文柯,資深軟體開發專家和專案經理,《Spring技術內幕—深入解析Spring架構和設計原理》作者

設計模式之禪》以設計模式為主題,是作者多年軟體開發經驗的總結。它介紹了一些重要的設計原則,並對各種經典的設計模式進行了詳細的分析、比較和綜合。全書通俗易懂、例項豐富,對想要學習設計模式的程式設計師有很大的啟發和幫助。
—鄭暉,資深軟體開發專家和CTO,《冒號課堂》作者

無論是在建築領域,還是在物件導向軟體開發領域,如何強調設計模式的重要性都不過分。如果你覺得設計模式難學,推薦你認真閱讀《設計模式之禪》這本書,它用大量生動、有趣的故事將設計模式的深奧、晦澀化解於無形;如果你對設計模式一知半解,或只能“紙上談兵”,建議你反覆閱讀這本書,它對物件導向的原則、設計模式的內涵和外延,以及設計模式的應用場景做了全面而深刻地闡述。
—王福強,資深軟體開發專家和架構師,《Spring揭秘》作者

不管是新手還是大俠,《設計模式之禪》絕不容錯過,因為不能熟練地運用設計模式,就不能算是一名合格的程式設計師。它通俗易懂,作者精心挑選和設計的故事和案例引人入勝,是初學者的不二選擇;它系統而全面,但又不乏深度,處處滲透著作者對設計模式的“悟”,是合格程式設計師必備的修煉秘籍。
—徐彬,資深軟體開發專家和架構師,《GWT揭秘》作者

作者在《設計模式之禪》中表現出來的想象力、創造力以及對設計模式和軟體架構的深刻理解,讓我十分震撼。我喜歡這種透過想象來講解設計模式和剖析軟體結構的方式,它一定會讓你也受益匪淺。
—倪健,資深架構師和專案經理,《軟體開發之禪》作者


目 錄
前 言
第一部分 大旗不揮,誰敢衝鋒—熱身篇
第1章 單一職責原則
1.1 我是“牛”類,我可以擔任多職嗎
1.2 絕殺技,打破你的傳統思維
1.3 我單純,所以我快樂
1.4 最佳實踐
第2章 里氏替換原則
2.1 愛恨糾葛的父子關係
2.2 糾紛不斷,規則壓制
2.3 最佳實踐
第3章 依賴倒置原則
3.1 依賴倒置原則的定義
3.2 言而無信,你太需要契約
3.3 依賴的三種寫法
3.4 最佳實踐
第4章 介面隔離原則
4.1 介面隔離原則的定義
4.2 美女何其多,觀點各不同
4.3 保證介面的純潔性
4.4 最佳實踐
第5章 迪米特法則
5.1 迪米特法則的定義
5.2 我的知識你知道得越少越好
5.3 最佳實踐
第6章 開閉原則
6.1 開閉原則的定義
6.2 開閉原則的廬山真面目
6.3 為什麼要採用開閉原則
6.4 如何使用開閉原則
6.5 最佳實踐
第二部分 我惹了誰—真刀實槍篇
第7章 單例模式
7.1 我是皇帝我獨苗
7.2 單例模式的定義
7.3 單例模式的應用
7.4 單例模式的擴充套件
7.5 最佳實踐
第8章 工廠方法模式
8.1 女媧造人的故事
8.2 工廠方法模式的定義
8.3 工廠方法模式的應用
8.3.1 工廠方法模式的優點
8.3.2 工廠方法模式的使用場景
8.4 工廠方法模式的擴充套件
8.5 最佳實踐
第9章 抽象工廠模式
9.1 女媧的失誤
9.2 抽象工廠模式的定義
9.3 抽象工廠模式的應用
9.3.1 抽象工廠模式的優點
9.3.2 抽象工廠模式的缺點
9.3.3 抽象工廠模式的使用場景
9.3.4 抽象工廠模式的注意事項
9.4 最佳實踐
第10章 模板方法模式
10.1 輝煌工程—製造悍馬
10.2 模板方法模式的定義
10.3 模板方法模式的應用
10.4 模板方法模式的擴充套件
10.5 最佳實踐
第11章 建造者模式
11.1 變化是永恆的
11.2 建造者模式的定義
11.3 建造者模式的應用
11.4 建造者模式的擴充套件
11.5 最佳實踐
第12章 代理模式
12.1 我是遊戲至尊
12.2 代理模式的定義
12.3 代理模式的應用
12.3.1 代理模式的優點
12.3.2 代理模式的應用
12.4 代理模式的擴充套件
12.4.1 普通代理
12.4.2 強制代理
12.4.3 代理是有個性的
12.4.4 虛擬代理
12.4.5 動態代理
12.5 最佳實踐
第13章 原型模式
13.1 個性化電子賬單
13.2 原型模式的定義
13.3 原型模式的應用
13.3.1 原型模式的優點
13.3.2 原型模式的使用場景
13.4 原型模式的注意事項
13.4.1 建構函式不會被執行
13.4.2 淺複製和深複製
13.4.3 clone與final兩個冤家
13.5 最佳實踐
第14章 中介者模式
14.1 進銷存管理是這個樣子的嗎?
14.2 中介者模式的定義
14.3 中介者模式的應用
14.4 中介者模式的實際應用
14.5 最佳實踐
第15章 命令模式
15.1 專案經理也難當
15.2 命令模式的定義
15.3 命令模式的應用
15.3.1 命令模式的優點
15.3.2 命令模式的缺點
15.3.3 命令模式的使用場景
15.4 命令模式的擴充套件
15.4.1 未講完的故事
15.4.2 反悔問題
15.5 最佳實踐
第16章 責任鏈模式
16.1 古代婦女的枷鎖—“三從四德”
16.2 責任鏈模式的定義
16.3 責任鏈模式的應用
16.3.1 責任鏈模式的優點
16.3.2 責任鏈模式的缺點
16.3.3 責任鏈模式的注意事項
16.4 最佳實踐
第17章 裝飾模式
17.1 罪惡的成績單
17.2 裝飾模式的定義
17.3 裝飾模式應用
17.3.1 裝飾模式的優點
17.3.2 裝飾模式的缺點
17.3.3 裝飾模式的應用
17.4 最佳實踐
第18章 策略模式
18.1 劉備江東娶妻,趙雲他容易嗎
18.2 策略模式的定義
18.3 策略模式的應用
18.3.1 策略模式的優點
18.3.2 策略模式的缺點
18.3.3 策略模式的應用
18.3.4 策略模式的注意事項
18.4 策略模式的擴充套件
18.5 最佳實踐
第19章 介面卡模式
19.1 業務發展—上帝才能控制
19.2 介面卡模式的定義
19.3 介面卡模式的應用
19.3.1 介面卡模式的優點
19.3.2 介面卡模式的應用
19.3.3 介面卡模式的注意事項
19.4 介面卡模式的擴充套件
19.5 最佳實踐
第20章 迭代器模式
20.1 整理專案資訊—苦差事
20.2 迭代器模式的定義
20.3 迭代器模式的應用
20.4 最佳實踐
第21章 組合模式
21.1 公司的人事架構是這樣的嗎
21.2 組合模式的定義
21.3 組合模式的應用
21.3.1 組合模式的優點
21.3.2 組合模式的缺點
21.3.3 組合模式的應用
21.3.4 組合模式的注意事項
21.4 組合模式的擴充套件
21.4.1 真實的組合模式
21.4.2 透明的組合模式
21.4.3 組合模式的遍歷
21.5 最佳實踐
第22章 觀察者模式
22.1 韓非子身邊的臥底是誰派來的
22.2 觀察者模式的定義
22.3 觀察者模式的應用
22.3.1 觀察者模式的優點
22.3.2 觀察者模式的缺點
22.3.3 觀察者模式的應用
22.3.4 觀察者模式的注意事項
22.4 觀察者模式的擴充套件
22.4.1 Java世界中的觀察者模式
22.4.2 專案中真實觀察者模式
22.4.3 訂閱釋出模型
22.5 最佳實踐
第23章 門面模式
23.1 我要投遞信件
23.2 門面模式的定義
23.3 門面模式的應用
23.3.1 門面模式的優點
23.3.2 門面模式的缺點
23.3.3 門面模式的應用
23.4 門面模式的注意事項
23.4.1 一個子系統可以有多個門面
23.4.2 門面不參與子系統內的業務邏輯
23.5 最佳實踐
第24章 備忘錄模式
24.1 如此追女孩子,你還不樂
24.2 備忘錄模式的定義
24.3 備忘錄模式的應用
24.3.1 備忘錄模式的應用
24.3.2 備忘錄模式的注意事項
24.4 備忘錄模式的擴充套件
24.4.1 clone方式的備忘錄
24.4.2 多狀態的備忘錄模式
24.4.3 多備份的備忘錄
24.4.4 封裝得更好一點
24.5 最佳實踐
第25章 訪問者模式
25.1 員工的隱私何在?
25.2 訪問者模式的定義
25.3 訪問者模式的應用
25.3.1 訪問者模式的優點
25.3.2 訪問者模式的缺點
25.3.3 訪問者模式的應用
25.4 訪問者模式的擴充套件
25.4.1 統計功能
25.4.2 多個訪問者
25.4.3 雙分派
25.5 最佳實踐
第26章 狀態模式
26.1 城市的縱向發展功臣—電梯
26.2 狀態模式的定義
26.3 狀態模式的應用
26.3.1 狀態模式的優點
26.3.2 狀態模式的缺點
26.3.3 狀態模式的應用
26.3.4 狀態模式的注意事項
26.4 最佳實踐
第27章 直譯器模式
27.1 四則運算你會嗎
27.2 直譯器模式的定義
27.3 直譯器模式的應用
27.3.1 直譯器模式的優點
27.3.2 直譯器模式的缺點
27.3.3 直譯器模式使用的場景
27.3.4 直譯器模式的注意事項
27.4 最佳實踐
第28章 享元模式
28.1 記憶體溢位,司空見慣
28.2 享元模式的定義
28.3 享元模式的應用
28.3.1 享元模式優點和缺點
28.3.2 享元模式的應用
28.4 享元模式的擴充套件
28.4.1 執行緒安全的問題
28.4.2 效能平衡
28.5 最佳實踐
第29章 橋樑模式
29.1 我有一個夢想……
29.2 橋樑模式的定義
29.3 橋樑模式的應用
29.3.1 橋樑模式的優點
29.3.2 橋樑模式的應用
29.3.3 橋樑模式的注意事項
29.4 最佳實踐
第三部分 誰的地盤誰做主—模式PK篇
第30章 建立類模式大PK
30.1 工廠方法模式VS建造者模式
30.1.1 按工廠方法建造超人
30.1.2 按建造者模式建造超人
30.1.3 最佳實踐
30.2 抽象工廠模式VS建造者模式
30.2.1 按抽象工廠模式生產車輛
30.2.2 按建造者模式生產車輛
30.2.3 最佳實踐
第31章 結構類模式大PK
31.1 代理模式VS裝飾模式
31.1.1 代理模式
31.1.2 裝飾模式
31.1.3 最佳實踐
31.2 裝飾模式VS介面卡模式
31.2.1 按裝飾模式描述醜小鴨
31.2.2 按介面卡模式實現醜小鴨
31.2.3 最佳實踐
第32章 行為類模式大PK
32.1 命令模式VS策略模式
32.1.1 策略模式實現壓縮演算法
32.1.2 命令模式實現壓縮演算法
32.1.3 小結
32.2 策略模式VS狀態模式
32.2.1 策略模式實現人生
32.2.2 狀態模式實現人生
32.2.3 小結
32.3 觀察者模式VS責任鏈模式
32.3.1 責任鏈模式實現DNS解析過程
32.3.2 觸發鏈模式實現DNS解析過程
32.3.3 小結
第33章 跨戰區PK
33.1 策略模式VS橋樑模式
33.1.1 策略模式實現郵件傳送
33.1.2 橋樑模式實現郵件傳送
33.1.3 最佳實踐
33.2 門面模式VS中介者模式
33.2.1 中介者模式實現工資計算
33.2.2 門面模式實現工資計算
33.2.3 最佳實踐
33.3 包裝模式群PK
33.3.1 代理模式
33.3.2 裝飾模式
33.3.3 介面卡模式
33.3.4 橋樑模式
33.3.5 最佳實踐
第四部分 完美世界—混編模式
第34章 命令模式+責任鏈模式
34.1 搬移UNIX的命令
34.2 混編小結
第35章 工廠方法模式+策略模式
35.1 迷你版的交易系統
35.2 混編小結
第36章 觀察者模式+中介者模式
36.1 事件觸發器的開發
36.2 混編小結
第37章 規格模式
37.1 規格模式的實現
37.2 最佳實踐
第38章 MVC框架
38.1 MVC框架的實現
38.1.1 MVC的系統架構
38.1.2 模型管理器
38.1.3 值棧
38.1.4 檢視管理器
38.1.5 工具類
38.2 最佳實踐
附錄:23個設計模式

設計模式--可複用物件導向軟體的基礎(雙語版)(十五週年·限量紀念版)即將上市,敬請關注!

[該貼被songshu於2010-02-25 13:59修改過]

相關文章