Part.1 模式介紹
第一章 談物件導向和模式
1.1 什麼是物件
1.2 物件導向的好處
1.3 重用
1.4 模式簡史
1.5 什麼是模式
1.6 學習設計模式的一些常見問題
1.7 本章關鍵字
第二章 第1個模式-模板方法(Template Method)模式
2.1 從回家過年說起
2.1.1 DRY(Don't Repeat Yourself)
2.1.2 變化+ 重複,如何維護
2.2 模版方法(Template Method)模式
2.2.1 使用繼承
2.2.2 模版方法模式
2.3 引入回檔(Callback)
2.4 總結
Part.2 建立物件
第三章 單例(Singleton)模式
3.1 最簡單的單例
3.2 進階
3.2.1 延遲建立
3.2.2 執行緒安全
3.2.3 Double-Check Locking
3.2.4 Initialization on demand holder
3.2.5 Singleton 的序列化
3.3 總結
3.4 本章關鍵字
第四章 工廠方法(Factory Method)模式
4.1 工廠方式模式
4.1.1 類別圖
4.1.2 建立資料庫連線物件
4.2 靜態工廠方法
4.3 總結
4.4 本章關鍵字
第五章 原型(Prototype)模式
5.1 原型模式
5.2 寄個快遞
5.3 實現
5.3.1 UML 靜態類別圖
5.3.2 程式實現
5.4 深拷貝(Deep Copy)
5.5 總結
5.6 本章關鍵字
第六章 控制反轉(IoC)
6.1 從建立物件談起
6.2 使用工廠方法模式的問題
6.3 Inversion of Control(控制反轉)
6.3.1 IoC 和DI(Dependency Injection,相依注入) 6-26
6.3.2 Service Locator(服務定位器)
6.3.3 Dependency Injection
6.4 總結
6.5 本章關鍵字
Part.3 建構複雜結構
第七章 裝飾器(Decorator)模式
7.1 記錄歷史修改
7.2 Open-Closed Principle(開放—封閉原則,OCP)
7.3 裝飾器(Decorator)模式
7.3.1 類別圖
7.3.2 實現
7.3.3 一點變化
7.3.4 如何使用
7.3.5 測試
7.4 裝飾器模式的優缺點
7.5 總結
7.6 本章關鍵字
第八章 代理(Proxy)模式
8.1 代理(Proxy)模式
8.1.1 類別圖
8.1.2 存取分散式物件
8.2 J2SE 動態代理
8.2.1 類別和介面
8.2.2 呼叫原理
8.2.3 實現同步
8.2.4 總結
8.3 和裝飾器(Decorator)模式的比較
8.4 總結
8.5 本章關鍵字
第九章 配接器(Adapter)模式
9.1 打樁
9.2 其他配接器模式
9.2.1 類別配接器
9.2.2 雙向配接器
9.3 測試
9.4 和代理(Proxy)模式的比較
9.5 總結
9.6 本章關鍵字
第十章 表象(Facade)模式
10.1 表象(Facade)模式
10.2 Least Knowledge Principle(最少知識原則)
10.3 懶惰的老闆請客
10.4 EJB 裡的表象模式
10.5 總結
10.6 本章關鍵字
第十一章 組合(Composite)模式
11.1 組合模式概述
11.1.1 類別圖
11.1.2 使用組合(Composite)模式
11.1.3 測試
11.2 透明的組合模式
11.3 安全的組合模式VS 透明的組合模式
11.4 還需要注意什麼
11.5 總結
11.6 本章關鍵字
Part.4 行為模式
第十二章 策略(Strategy)模式
12.1 既要坐飛機又要坐客運
12.2 封裝變化
12.3 策略模式
12.4 還需要繼承嗎
12.5 優先使用合成而非繼承
12.6 總結
12.7 本章關鍵字
第十三章 狀態(State)模式
13.1 電子顏料板
13.2 switch-case 實現
13.3 如何封裝變化
13.4 狀態模式
13.5 使用Enum 型態
13.6 與策略(Strategy)模式的比較
13.7 總結
13.8 本章關鍵字
第十四章 觀察者(Observer)模式
14.1 股票價格變了多少
14.2 觀察者模式
14.2.1 如何實現
14.2.2 觀察者模式
14.2.3 Java 標準函數庫的觀察者模式
14.3 總結
14.4 本章關鍵字
Part.5 終點還是起點
第十五章 剖面導向的程式設計(AOP)
15.1 記錄時間
15.2 AOP(Aspect-Oriented Programming)
15.2.1 一些重要概念
15.2.2 OOP 實現橫切
15.2.3 AOP 實現技術
15.3 AOP 框架介紹
15.4 AOP 聯盟(AOP Alliance)
15.5 使用AOP 程式設計的風險
15.6 OOP 還是AOP
15.7 總結
15.8 本章關鍵字
第十六章 物件導向開發
16.1 寫在物件導向設計之前
16.2 汲取知識
16.3 橫看成嶺側成峰
16.4 提煉模型
16.5 應用設計模式
16.6 不能脫離實現技術
16.7 重構
16.8 過度的開發(Over-engineering)
16.9 總結
16.10 本章關鍵字
第十七章 結語
17.1 感悟
17.2 物件導向的開發範式
17.3 一些原則
17.4 寫在模式之後
17.5 本章關鍵字
附錄A 推薦閱讀資源
Java 語言相關學習圖書
J2EE 技術相關圖書
物件導向設計相關圖書
給Agile(敏捷)開發人員推薦的書籍
網站和論壇
參考文獻 .