設計模式之禪, 2/e
內容描述
<書籍簡介>
《設計模式之禪(第2版)》由秦小波著,是設計模式領域公認的3本經典著作之一,「極具趣味,容易理解,但講解又極為嚴謹和透徹」是本書的寫作風格和方法的最大特點。第1版2010年出版,暢銷至今,廣受好評,是該領域的里程碑著作。深刻解讀6大設計原則和28種設計模式的準確定義、應用方法和最佳實踐,全方位比較各種同類模式之間的異同,詳細講解將不同的模式組合使用的方法。第2版在第1版的基礎上有兩方面的改進,一方面結合讀者的意見和建議對原有內容中的瑕疵進行了修正和完善,另一方面增加了4種新的設計模式,希望這一版能為廣大程序員們奉上一場更加完美的設計模式盛宴!
《設計模式之禪(第2版)》共38章,分為五部分:第一部分(第1?6章),以一種全新的視角對面向對象程序設計的6大原則進行了深刻解讀,旨在讓讀者能更深刻且準確地理解這些原則,為後面的學習打下基礎;第二部分(第7?29章)通過大量生動的案例講解和分析了23種最常用的設計模式,並進行了擴展講解,通俗易懂,趣味性極強而又緊扣模式的核心;第三部分(第30?33章)對同類型和相關聯的模式進行了深入分析和比較,旨在闡明各種設計模式之間的差別以及它們的理想應用場景;第四部分(第34?36章)探討瞭如何在實際開發中將各種設計模式混合起來使用,以發揮設計模式的最大效用;第五部分(第37?38章)是本書的擴展篇,首先從實現的角度對MVC框架的原理進行了深入分析,然後講解了5種新的設計模式的原理、意圖和最佳實踐。本書最後附有一份精美的設計模式彩圖,可以裁剪,便於參考。
<目錄>
前言
第一部分 大旗不揮,誰敢衝鋒—6大設計原則全新解讀
第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最佳實踐
第二部分 真刀實槍—23種設計模式完美演繹
第7章 單例模式
7.1我是皇帝我獨苗
7.2單例模式的定義
7.3單例模式的應用
7.3.1單例模式的優點
7.3.2單例模式的缺點
7.3.3單例模式的使用場景
7.3.4單例模式的註意事項
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.3.1模板方法模式的優點
10.3.2模板方法模式的缺點
10.3.3模板方法模式的使用場景
10.4模板方法模式的擴展
10.5最佳實踐
第11章 建造者模式
11.1變化是永恆的
11.2建造者模式的定義
11.3建造者模式的應用
11.3.1建造者模式的優點
11.3.2建造者模式的使用場景
11.3.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.5最佳實踐
第13章 原型模式
13.1個性化電子賬單
13.2原型模式的定義
13.3原型模式的應用
13.3.1原型模式的優點
13.3.2原型模式的使用場景
13.4原型模式的註意事項
13.4.1構造函數不會被執行
13.4.2淺拷貝和深拷貝
13.4.3clone與final兩個冤家
13.5最佳實踐
第14章 中介者模式
14.1進銷存管理是這個樣子的嗎
14.2中介者模式的定義
14.3中介者模式的應用
14.3.1中介者模式的優點
14.3.2中介者模式的缺點
14.3.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.1Java世界中的觀察者模式
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.1clone方式的備忘錄
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解析過程2
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章 MVC框架
37.1MVC框架的實現
37.1.1MVC的系統架構
37.1.2模型管理器
37.1.3值棧
37.1.4視圖管理器
37.1.5工具類
37.2最佳實踐
第38章 新模式
38.1規格模式
38.1.1規格模式的實現
38.1.2最佳實踐
38.2對象池模式
38.2.1正確的池化
38.2.2對象池模式的意圖
38.2.3最佳實踐
38.3僱工模式
38.3.1僱工合作
38.3.2僱工模式的意圖
38.3.3最佳實踐
38.4黑板模式
38.4.1黑板模式的意圖
38.4.2黑板模式的實現方法
38.5空對象模式
38.5.1空對象模式的例子
38.5.2最佳實踐
附錄 23種設計模式彩圖