《大話設計模式【Java溢彩加強版】》是2022年清華大學出版社出版的圖書,作者是程傑。
基本介紹
- 中文名:大話設計模式【Java溢彩加強版】
- 作者:程傑
- 出版社:清華大學出版社
- 出版時間:2022年10月1日
- 定價:129 元
- ISBN:9787302615538
內容簡介,圖書目錄,
內容簡介
《大話設計模式 Java溢彩加強版》在形式上開創了IT技術圖書的先河。通篇以情景對話形式,用多個小故事和編程示例來組織解讀GoF(設計模式經典名著—Design Patterns Elements of Reusable Object-Oriented Software)的23個設計模式。
《大話設計模式 Java溢彩加強版》共分為一個楔子+29章正文。其中,楔子主要通過一個編程實例的演變為初學者介紹了面向對象的基本概念,用來奠定面向對象基礎以及樹立正確的、有高度的開發思維;第0、1、3、4、5章著重講解了面向對象的意義、好處以及幾個重要的設計規則;第2章,以及第6~28章詳細講解了23種設計模式;第29章對設計模式進行了全面總結。
《大話設計模式 Java溢彩加強版》的特色是通過小菜與大鳥的趣味問答,在講解程式的不斷重構和演講過程中,極大地降低設計模式的學習門檻,讓初學者可以更加容易地理解為什麼這樣設計才是好的?是怎樣想到這樣設計的?以達到不但授之以“魚”,還授之以“漁”的目的,引導讀者體會設計演變過程中蘊藏的大智慧。
圖書目錄
第0章 楔子 培訓實習生—面向對象基礎 ························1
0.1 培訓實習生 ·······························1
0.2 類與實例 ··································2
0.3 構造方法 ··································4
0.4 方法重載 ··································6
0.5 屬性與修飾符 ····························7
0.6 封裝 ········································9
0.7 繼承 ······································10
0.8 多態 ······································14
0.9 重構 ······································18
0.10 抽象類 ··································20
0.11 接口 ·····································22
0.12 集合 ·····································27
0.13 泛型 ·····································29
0.14 客套 ·····································31
第1章 代碼無錯就是優?—簡單工廠模式 ······················32
1.1 面試受挫 ································32
1.2 初學者代碼毛病 ·······················33
1.3 代碼規範 ································34
1.4 面向對象編程 ··························34
1.5 活字印刷,面向對象 ·················35
1.6 面向對象的好處 ·······················37
1.7 複製 vs. 復用····························37
1.8 業務的封裝 ·····························38
1.9 緊耦合 vs. 松耦合······················40
1.10 簡單工廠模式 ·························42
1.11 UML類圖 ······························43
第2章 商場促銷—策略模式 ········································48
2.1 商場收銀軟體 ··························48
2.2 增加打折 ································49
2.3 簡單工廠實現 ··························50
2.4 策略模式 ································53
2.5 策略模式實現 ··························55
2.6 策略與簡單工廠結合 ·················57
2.7 策略模式解析 ··························58
第3章 電子閱讀器 vs. 手機—單一職責原則 ···················60
3.1 閱讀幹嗎不直接用手機? ···········60
3.2 手機不純粹 ·····························60
XV
目 錄
3.3 電子閱讀器 vs. 手機···················61
3.4 單一職責原則 ··························62
3.5 方塊遊戲的設計 ·······················62
3.6 電子閱讀器與手機的利弊 ···········65
第4章 考研求職兩不誤—開放-封閉原則 ························66
4.1 考研失敗 ································66
4.2 開放-封閉原則 ·························67
4.3 何時應對變化 ··························69
4.4 兩手準備,並全力以赴 ··············70
第5章 會修電腦不會修收音機?—依賴倒轉原則 ·············72
5.1 MM請求修電腦 ························72
5.2 電話遙控修電腦 ·······················73
5.3 依賴倒轉原則 ··························74
5.4 里氏代換原則 ··························77
5.5 修收音機 ································78
第6章 穿什麼有這么重要?—裝飾模式 ·························80
6.1 穿什麼有這么重要? ·················80
6.2 小菜扮靚第一版 ·······················81
6.3 小菜扮靚第二版 ·······················83
6.4 裝飾模式 ································85
6.5 小菜扮靚第三版 ·······················88
6.6 商場收銀程式再升級 ·················91
6.7 簡單工廠+策略+裝飾模式實現 ·····92
6.8 裝飾模式總結 ··························96
第7章 為別人做嫁衣—代理模式 ··································98
7.1 為別人做嫁衣! ·······················98
7.2 沒有代理的代碼 ······················100
7.3 只有代理的代碼 ······················101
7.4 符合實際的代碼 ······················102
7.5 代理模式 ·······························104
7.6 代理模式套用 ·························105
7.7 秀才讓小六代其求婚 ················106
第8章 工廠製造細節無須知—工廠方法模式 ·················107
8.1 需要了解工廠製造細節嗎? ·······107
8.2 簡單工廠模式實現 ···················108
8.3 工廠方法模式實現 ···················109
8.4 簡單工廠 vs. 工廠方法 ··············110
8.5 商場收銀程式再再升級 ·············115
8.6 簡單工廠+策略+裝飾+工廠方法 ··116
XVI
大話設計模式 | 【Java溢彩加強版】
第9章 簡歷複印—原型模式 ······································120
9.1 誇張的簡歷 ····························120
9.2 簡歷代碼初步實現 ···················121
9.3 原型模式 ·······························123
9.4 簡歷的原型實現 ······················125
9.5 淺複製與深複製 ······················126
9.6 簡歷的深複製實現 ···················129
9.7 複製簡歷 vs. 手寫求職信 ···········130
第10章 考題抄錯會做也白搭—模板方法模式 ···············132
10.1 選擇題不會做,蒙唄! ············132
10.2 重複=易錯+難改 ·····················133
10.3 提煉代碼 ······························135
10.4 模板方法模式 ························138
10.5 模板方法模式的特點 ···············140
10.6 主觀題,看你怎么蒙 ···············140
第11章 無熟人難辦事?—迪米特法則 ························141
11.1 第一天上班 ···························141
11.2 無熟人難辦事 ························142
11.3 迪米特法則 ···························144
第12章 牛市股票還會虧錢?—外觀模式 ·····················145
12.1 牛市股票還會虧錢? ···············145
12.2 股民炒股代碼 ························146
12.3 投資基金代碼 ························147
12.4 外觀模式 ······························149
12.5 何時使用外觀模式 ··················150
第13章 好菜每回味不同—建造者模式 ························152
13.1 炒麵沒放鹽 ···························152
13.2 建造小人一 ···························154
13.3 建造小人二 ···························155
13.4 建造者模式 ···························156
13.5 建造者模式解析 ·····················159
13.6 建造者模式基本代碼 ···············160
第14章 老闆回來,我不知道—觀察者模式 ··················162
14.1 老闆回來?我不知道! ············162
14.2 雙向耦合的代碼 ·····················163
14.3 解耦實踐一 ···························165
14.4 解耦實踐二 ···························167
14.5 觀察者模式 ···························170
14.6 觀察者模式的特點 ··················172
14.7 Java內置接口實現 ···················173
14.8 觀察者模式的套用 ··················177
14.9 石守吉失手機後 ·····················178
第15章 就不能不換DB嗎?—抽象工廠模式 ·················179
15.1 就不能不換DB嗎? ·················179
15.2 最基本的數據訪問程式 ············181
15.3 用了工廠方法模式的數據訪問
程式 ····································182
15.4 用了抽象工廠模式的數據訪問
程式 ····································185
15.5 抽象工廠模式 ························188
15.6 抽象工廠模式的優點與缺點 ······189
15.7 用簡單工廠來改進抽象工廠 ······190
15.8 用反射+抽象工廠的數據訪問
程式 ····································192
15.9 用反射+配置檔案實現數據訪問
程式 ····································194
15.10 商場收銀程式再再再升級 ·······195
15.11 無痴迷,不成功····················198
第16章 無盡加班何時休—狀態模式 ···························199
16.1 加班,又是加班! ··················199
16.2 工作狀態 — 函式版 ·············200
16.3 工作狀態 — 分類版 ·············201
16.4 方法過長是壞味道 ··················203
16.5 狀態模式 ······························203
16.6 狀態模式的好處與用處 ············205
16.7 工作狀態 — 狀態模式版 ·······206
第17章 在NBA我需要翻譯—適配器模式 ·····················209
17.1 在NBA我需要翻譯! ···············209
17.2 適配器模式 ···························210
17.3 何時使用適配器模式 ···············212
17.4 籃球翻譯適配器 ·····················213
17.5 適配器模式的.NET套用 ···········216
17.6 扁鵲的醫術 ···························217
第18章 如果再回到從前—備忘錄模式 ························218
18.1 如果再給我一次機會…… ·········218
18.2 遊戲存進度 ···························219
18.3 備忘錄模式 ···························221
18.4 備忘錄模式基本代碼 ···············222
18.5 遊戲進度備忘 ························224
大話設計模式 | 【Java溢彩加強版】
第19章 分公司=一部門—組合模式 ····························227
19.1 分公司不就是一部門嗎? ·········227
19.2 組合模式 ······························229
19.3 透明方式與安全方式 ···············231
19.4 何時使用組合模式 ··················232
19.5 公司管理系統 ························233
19.6 組合模式好處 ························235
第20章 想走?可以!先買票—疊代器模式 ··················237
20.1 乘車買票,不管你是誰! ·········237
20.2 疊代器模式 ···························239
20.3 疊代器實現 ···························240
20.4 Java的疊代器實現 ···················243
20.5 疊代高手 ······························244
第21章 有些類也需計畫生育—單例模式 ·····················245
21.1 類也需要計畫生育 ··················245
21.2 判斷對象是否是null ················246
21.3 生還是不生是自己的責任 ·········249
21.4 單例模式 ······························251
21.5 多執行緒時的單例 ·····················253
21.6 雙重鎖定 ······························254
21.7 靜態初始化 ···························255
第22章 手機軟體何時統一—橋接模式 ························257
22.1 憑什麼你的遊戲我不能玩 ·········257
22.2 緊耦合的程式演化 ··················258
22.3 合成/聚合復用原則 ·················262
22.4 松耦合的程式 ························263
22.5 橋接模式 ······························265
22.6 橋接模式基本代碼 ··················267
22.7 我要開發“好”遊戲 ···············268
第23章 烤羊肉串引來的思考—命令模式 ·····················269
23.1 吃烤羊肉串! ························269
23.2 燒烤攤 vs. 燒烤店 ···················270
23.3 緊耦合設計 ···························271
23.4 命令模式 ······························272
23.5 松耦合設計 ···························274
23.6 進一步改進命令模式 ···············276
23.7 命令模式的作用 ·····················278
第24章 加薪非要老總批?—職責鏈模式 ·····················279
24.1 老闆,我要加薪! ··················279
24.2 加薪代碼初步 ························280
24.3 職責鏈模式 ···························282
24.4 職責鏈的好處 ························284
24.5 加薪代碼重構 ························284
24.6 加薪成功 ······························287
第25章 世界需要和平—中介者模式 ···························289
25.1 世界需要和平! ·····················289
25.2 中介者模式 ···························291
25.3 安理會作中介 ························293
25.4 中介者模式的優缺點 ···············295
第26章 項目多也別傻做—享元模式 ···························298
26.1 項目多也別傻做! ··················298
26.2 享元模式 ······························300
26.3 網站共享代碼 ························302
26.4 內部狀態與外部狀態 ···············304
26.5 享元模式套用 ························306
第27章 其實你不懂老闆的心—解釋器模式 ··················309
27.1 其實你不懂老闆的心 ···············309
27.2 解釋器模式 ···························310
27.3 解釋器模式的好處 ··················313
27.4 音樂解釋器 ···························313
27.5 音樂解釋器實現 ·····················315
27.6 料事如神 ······························319
第28章 男人和女人—訪問者模式 ······························320
28.1 男人和女人! ························320
28.2 最簡單的編程實現 ··················321
28.3 簡單的面向對象實現 ···············322
28.4 用了模式的實現 ·····················324
28.5 訪問者模式 ···························327
28.6 訪問者模式基本代碼 ···············328
28.7 比上不足,比下有餘 ···············330
第29章 OOTV杯超級模式大賽—模式總結 ···················331
29.1 演講任務 ······························331
29.2 報名參賽 ······························332
29.3 超模大賽開幕式 ·····················333
29.4 創建型模式比賽 ·····················337
29.5 結構型模式比賽 ·····················342
29.6 行為型模式一組比賽 ···············350
29.7 行為型模式二組比賽 ···············356
29.8 決賽 ····································361
29.9 夢醒時分 ······························365
29.10 沒有結束的結尾 ···················366
參考文獻···································································367