設計模式之禪

設計模式之禪

《設計模式之禪》是2010年3月 機械工業出版社出版的圖書,作者是秦小波。

內容簡介

如果說“四人幫”的《設計模式》是設計模式領域的“聖經”,那么之後出版的各種關於設計模式的書都可稱之為“聖經”的“注釋版”或“聖經的故事”。本書是得道者對“聖經”的“禪悟”,它既不像“聖經”那樣因為惜字如金、字字珠璣而深奧、晦澀和難懂,又比“聖經”的“注釋版”更深刻和全面、更通俗和生動、更接近開發者遇到的實踐場景,更具指導性。本書兼收並蓄、博採眾長,也許是設計模式領域裡的下一個里程碑之作。

全書共分為四部分,第一部分從原理的角度闡述了面向對象程式設計的6大原則;第二部生動地講解和剖析了23種常見的設計模式,並進行了擴展,通俗易懂,趣味性極強而又緊扣模式的核心;第三部分對各種相關聯的設計模式進行了深入分析和比較,旨在闡明各種設計模式比較理想的套用場景和它們之間的區別;第四部分探討了設計模式的混編,講解了如何在實際開發中將各種設計模式混合起來使用,以發揮設計模式的最大效用。最後,本書還附有一份設計模式彩圖,可以裁剪,便於參考。

禪宗曰:“教外別傳,不立文字”,禪的境界本不該用文字來描述,言語也道不明白,但為了傳道,悟道者仍要藉言語來說明。

何為禪?一種境界,一種體驗,一種精神領域的最高修為。何為設計模式?對面向對象思想的深刻理解,對軟體設計方法和編碼經驗的完美總結。

本書是創造者的心路歷程,是實踐者的智慧結晶,是得道者的禪悟。它通過幽默風趣的故事和通俗易懂的講述方式,引導你悟透設計模式的真諦。

如果你在思考下面這些問題,也許本書就是你想要的!

1. 業務分析如此細緻,架構設計如此健壯、可靠和穩定,但為何仍然無法適應業務發展的需要,而且生命周期只有短短几年?

2. 為何你的團隊協作了多年卻始終無法沉澱出可復用的組件或構件?依賴和解耦的標準是什麼?如何才能做到既不相互“刺傷”,又能相互“溫暖”?

3. 架構設計時,如何才能實現高可擴展性和易維護性?如何避免維護成本大於開發成本的悲哀現狀?

4. 交易型的系統如何大規模地借用設計模式的思想,以實現高性能、高可靠性的建設目標?

5. 架構設計時,如果遇到這樣的情況:“有一個請求者和多個處理者,同時要求二者之間解耦,以便處理者可以動態地擴展”,這該如何處理?

6. 如果遇到過這樣場景:“多個對象依賴一個對象,該對象狀態改變時所有的依賴者都要相應地獲得通知,並且要求對象間鬆散耦合”,這該如何處理?

7. 萬物皆對象,不可能把每一個對象都分解到原子級別,如何適度地細化對象的顆粒度?怎樣界定對象的粒度大小?

8. 同為創建類模式,工廠方法模式和建造者模式都可以創建對象,它們之間有何區別?適用的場景又有何不同?

9. 狀態模式和策略模式的通用類圖如此相似,在實際的套用場景中如何區分它們?

10. 如何使命令模式和責任鏈模式完美搭配並建立一個高可擴展性的系統架構,以解決客戶端和處理者都參數化的場景?

11. 觀察者模式和責任鏈模式真的沒有可比性嗎?它們的主要區別何在?實際套用中如何使用?

12. 組合模式只能用來表示部分和整體的關係嗎?其擴展出的規格模式是如何實現的?透明的組合模式和安全的組合模式有何區別?

作者簡介

秦小波,資深軟體開發工程師、項目經理、系統分析師和架構師(獲Sun架構師認證),從事IT行業10餘年,經驗極其豐富,現就任於交通銀行軟體研發中心。精通設計模式,對設計模式有深刻認識和獨到見解,創造性地提出了自己在大量實踐中總結出來的新的設計模式。擅長於SSH、iBatis、jBPM等Java技術,對ESB、BPEL整合技術也有一定的研究。此外,具有IBM DB2 DBA資格認證,對海量數據處理有深入的研究。

目錄

前 言

第一部分 大旗不揮,誰敢

衝鋒—熱身篇

第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個設計模式

相關詞條

熱門詞條

聯絡我們