獲取下載鏈接
標籤
模式引入計算機科學領域已經有20餘年了,最初人們側重於面向對象的設計,而現在已經應用於計算機領域的各個方面,它們對計算機產生了深遠影響。 若想一本書涵蓋所有模式,那麼這本書將會非常龐大,以前的設計模式書籍專注於介紹設計模式,雖然讀者瞭解了這些設計模式,但是仍然不知道如何合理地使用它們,往往導致讀者為了使用設計模式而設計,而不是從問題出發,使用設計模式優雅地解決這些問題。 《漫談設計模式—從面向對象開始》主要從最基本的設計模式入手,並結合一些j2ee開發過程經常遇見的技術和概念,你將全面理解這10多個設計模式,並在開發過程中,讓你真正體會和思考面向對象編程的思想,也只有掌握這些,你才會能成為一位真正的設計專家。 《漫談設計模式—從面向對象開始》不是一本面向對象和java語言的入門書籍,閱讀對象主要是從事java語言的軟件開發人員但不限於java語言的開發人員。
第一篇 模式介紹 1 第1章 談面向對象和模式 3 1.1 什麼是對象 4 1.2 面向對象的好處 5 1.3 重用 6 1.4 模式簡史 7 1.5 什麼是模式 8 1.6 學習設計模式的一些常見問題 11 1.7 本章關鍵詞 13 第2章 第1個模式——模板方法(template method)模式 15 2.1 從回家過年說起 16 2.1.1 DRY(don't repeat yourself) 18 2.1.2 變化+重複,如何維護 20 2.2 模板方法(template method)模式 21 2.2.1 使用繼承 21 2.2.2 模板方法模式 24 2.3 引入回調(callback) 26 2.4 總結 30 2.5 本章關鍵詞 30 第二篇 創建對象 31 第3章 單例(singleton)模式 33 3.1 最簡單的單例 34 3.2 進階 35 3.2.1 延遲創建 35 3.2.2 線程安全 36 3.2.3 double-check locking 37 3.2.4 initialization on demand holder 39 3.2.5 singleton的序列化 40 3.3 總結 41 3.4 本章關鍵詞 42 第4章 工廠方法(factory method)模式 43 4.1 工廠方法模式 44 4.1.1 類圖 44 4.1.2 創建數據庫連接對象 47 4.2 靜態工廠方法 52 4.3 總結 53 4.4 本章關鍵詞 54 第5章 原型(prototype)模式 55 5.1 原型模式 56 5.2 寄個快遞 57 5.3 實現 57 5.3.1 uml靜態類圖 57 5.3.2 代碼實現 58 5.4 深拷貝(deep copy) 61 5.5 總結 65 5.6 本章關鍵詞 65 第6章 控制反轉(ioc) 67 6.1 從創建對象談起 68 6.2 使用工廠方法模式的問題 70 6.3 inversion of control(控制反轉) 71 6.3.1 ioc和di(dependency injection,依賴注入) 72 6.3.2 service locator(服務定位器) 73 6.3.3 dependency injection 76 6.4 總結 91 6.5 本章關鍵詞 92 第三篇 構建複雜結構 93 第7章 裝飾器(decorator)模式 95 7.1 記錄歷史修改 96 7.2 open-closed principle(開放—封閉原則,ocp) 99 7.3 裝飾器(decorator)模式 101 7.3.1 類圖 101 7.3.2 實現 101 7.3.3 一點變化 107 7.3.4 如何使用 108 7.3.5 測試 108 7.4 裝飾器模式的優缺點 110 7.5 總結 111 7.6 本章關鍵詞 111 第8章 代理(proxy)模式 113 8.1 代理(proxy)模式 114 8.1.1 類圖 114 8.1.2 訪問分佈式對象 114 8.2 j2se動態代理 122 8.2.1 類和接口 122 8.2.2 調用原理 124 8.2.3 實現同步 125 8.2.4 總結 131 8.3 和裝飾器(decorator)模式的比較 131 8.4 總結 132 8.5 本章關鍵詞 132 第9章 適配器(adapter)模式 133 9.1 打樁 134 9.2 其他適配器模式 137 9.2.1 類適配器 137 9.2.2 雙向適配器 138 9.3 測試 139 9.4 和代理(proxy)模式的比較 141 9.5 總結 141 9.6 本章關鍵詞 142 第10章 外觀(facade)模式 143 10.1 外觀(facade)模式 144 10.2 least knowledge principle(最少知識原則) 144 10.3 懶惰的老闆請客 145 10.4 ejb裡的外觀模式 148 10.5 總結 150 10.6 本章關鍵詞 150 第11章 組合(composite)模式 151 11.1 組合模式概述 152 11.1.1 類圖 152 11.1.2 使用組合(composite)模式 153 11.1.3 測試 156 11.2 透明的組合模式 159 11.3 安全的組合模式vs透明的組合模式 162 11.4 還需要注意什麼 162 11.5 總結 163 11.6 本章關鍵詞 163 第四篇 行為模式 165 第12章 策略(strategy)模式 167 12.1 既要坐飛機又要坐大巴 168 12.2 封裝變化 169 12.3 策略模式 172 12.4 還需要繼承嗎 173 12.5 優先使用合成而非繼承 175 12.6 總結 176 12.7 本章關鍵詞 177 第13章 狀態(state)模式 179 13.1 電子顏料板 180 13.2 switch-case實現 180 13.3 如何封裝變化 181 13.4 狀態模式 186 13.5 使用enum類型 186 13.6 與策略(strategy)模式的比較 191 13.7 總結 191 13.8 本章關鍵詞 192 第14章 觀察者(observer)模式 193 14.1 股票價格變了多少 194 14.2 觀察者模式 194 14.2.1 如何實現 194 14.2.2 觀察者模式 201 14.2.3 java標準庫的觀察者模式 201 14.3 總結 208 14.4 本章關鍵詞 208 第五篇 終點還是起點 209 第15章 面向切面的編程(aop) 211 15.1 記錄時間 212 15.2 aop(aspect-oriented programming) 215 15.2.1 一些重要概念 216 15.2.2 oop實現橫切 217 15.2.3 aop實現技術 218 15.3 aop框架介紹 244 15.4 aop聯盟(aop alliance) 245 15.5 使用aop編程的風險 245 15.6 oop還是aop 246 15.7 總結 247 15.8 本章關鍵詞 248 第16章 面向對象開發 249 16.1 寫在面向對象設計之前 250 16.2 汲取知識 251 16.3 橫看成嶺側成峰 253 16.4 提煉模型 254 16.5 應用設計模式 259 16.6 不能脫離實現技術 259 16.7 重構 260 16.8 過度的開發(over-engineering) 262 16.9 總結 263 16.10 本章關鍵詞 264 第17章 結語 265 17.1 感悟 266 17.2 面向對象的開發範式 266 17.3 一些原則 268 17.4 寫在模式之後 269 17.5 本章關鍵詞 269 附錄A 推薦閱讀資源 271 1 Java語言相關學習圖書 272 2 J2EE技術相關圖書 273 3 面向對象設計相關圖書 273 4 給Agile(敏捷)開發人員推薦的書籍 275 5 網站和論壇 275 參考文獻 277
《代碼之外的功夫 程序員精進之路》
厭倦了被代碼框死的思維?身為程序員的你,是否曾感覺自己遠不止是“敲代碼的”?這本書,正是一場為你量身打造的思維盛宴! 它大膽顛覆傳統,破天荒地在面向程序員的書籍中,一句代碼也不提。因為它深知,優秀的程序員,其核心價值絕非敲擊鍵盤的熟練度,而是將那冰冷的邏輯工具,巧妙化為解決真實世界難題的藝術。 ...
查看詳情 →《代碼整潔之道》
還在為Bug纏身、修改舊代碼如同考古而頭疼不已?還在為團隊效率低下、項目進度停滯不前而焦慮不安? 無論是崇尚快速迭代的敏捷,還是追求穩健深耕的傳統,所有開發者都心知肚明——代碼質量,才是項目成敗的關鍵命脈。它不僅是架構和管理的基石,更是日常開發中無處不在的痛點與閃光點。 而這本書,將徹底顛覆你對...
查看詳情 →《UML基礎、案例與應用》
本書教讀者循序漸進地、系統地學習UML基礎知識和應用技術。 全書分為三部分24章。第一部分"基礎知識"包括第1章到第15章,主要是介紹UML語言的基礎知識以及面向對象的概念和思想,還簡單介紹了UML在開發過程的應用方法。第二部分"學習案例"包括第16章到第22章,結合實例詳細分析了UML的應用...
查看詳情 →《了不起的JavaScript工程師》
《了不起的JavaScript工程師:從前端到全端高級進階》講述了開發者使用JavaScript在各種Web開發場景下所需要掌握的重點知識和概念。從最基礎的開發工具講起,再到開發思維方式和前端頁面開發,然後擴展到小程序開發和開發工具的混合應用,再講解前後端交互最常用的網絡協議及API設計,最後講解了...
查看詳情 →