注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計JAVA及其相關(guān)從零學(xué)Java設(shè)計模式

從零學(xué)Java設(shè)計模式

從零學(xué)Java設(shè)計模式

定 價:¥89.00

作 者: [美]米羅斯拉夫·威格納
出版社: 機械工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787111759782 出版時間: 2024-09-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書以實用的設(shè)計模式為例,講解了Java近年來在改善語法方面取得的進展,同時在實現(xiàn)這些模式的過程中展示了語言特性、設(shè)計模式與平臺效率之間的關(guān)系。本書涵蓋23種傳統(tǒng)的設(shè)計模式、11種較為常見的模式,以及8種適用于多線程環(huán)境的并發(fā)模式。另外,本書還簡要介紹了15種反模式。作者講解這些模式的時候不僅給出了簡潔、直觀的范例代碼,而且還利用UML類圖與JFR工具展示了運用該模式的程序所具備的架構(gòu)及運行細節(jié),讓讀者能夠更全面地了解模式對代碼結(jié)構(gòu)的影響,以及模式與Java虛擬機的交互情況。本書的特點在于把Java這種成熟的編程語言以及該語言最近新增的特性與各種設(shè)計模式結(jié)合起來,告訴讀者怎樣充分發(fā)揮Java的特性與優(yōu)勢,從而更好地實現(xiàn)設(shè)計模式,避免陷入空談概念而無法落實的境地。

作者簡介

  米羅斯拉夫·威格納(Miroslav Wengner)是一位熱衷于彈性分布式系統(tǒng)與產(chǎn)品質(zhì)量的軟件工程師。他參與了Robo4J項目(一個針對機器人及物聯(lián)網(wǎng)的響應(yīng)式軟實時框架),還為OpenJDK做出了貢獻,并參與了其他開源技術(shù)項目。他致力于構(gòu)建彈性、可擴展的解決方案。他入選了Java Champions Program,被評為JavaOne Rockstar,也是JCP的執(zhí)行委員會委員。他目前在OpenValue公司擔(dān)任首席軟件工程師,工作之余,他還在JavaOne、Devoxx等技術(shù)會議和博客上分享自己的心得。他很看好Java生態(tài)系統(tǒng),并幫助它變得更好。

圖書目錄

譯者序

前 言
審校者簡介
第一部分 設(shè)計模式與Java平臺的功能
第1章 軟件設(shè)計模式入門 3
1.1 技術(shù)準(zhǔn)備 3
1.2 編程:從符號到程序 3
1.3 OOP與APIE 5
1.3.1 封裝—只公布那些必須公布的信息 6
1.3.2 繼承—在應(yīng)該創(chuàng)造新類的時候創(chuàng)造 6
1.3.3 多態(tài)—根據(jù)需要表現(xiàn)出不同的行為 7
1.3.4 抽象—從細節(jié)中提取一套標(biāo)準(zhǔn)功能 9
1.3.5 把抽象、多態(tài)、繼承、封裝這四個概念貫穿起來 11
1.4 SOLID設(shè)計原則 12
1.4.1 單一功能原則—每個類只負責(zé)一件事 13
1.4.2 開閉原則 13
1.4.3 里氏替換原則—子類必須能夠當(dāng)作超類來使用 14
1.4.4 接口隔離原則 15
1.4.5 依賴反轉(zhuǎn)原則 17
1.5 設(shè)計模式為何如此重要 18
1.6 設(shè)計模式能夠解決哪些問題 18
1.7 小結(jié) 20
1.8 習(xí)題 21
1.9 參考資料 21
第2章 Java平臺 22
2.1 技術(shù)準(zhǔn)備 22
2.2 Java是如何誕生的 22
2.3 Java平臺的模型與功能 23
2.3.1 JDK 24
2.3.2 JRE 25
2.3.3 JVM 25
2.4 垃圾收集機制與Java內(nèi)存模型 30
2.4.1 JMM 30
2.4.2 GC與自動內(nèi)存管理 32
2.5 Java的核心API 35
2.5.1 原始類型與包裝器類型 36
2.5.2 與String有關(guān)的API 37
2.5.3 數(shù)組 39
2.5.4 Java集合框架 40
2.5.5 Math API 42
2.6 函數(shù)式編程與Java 43
2.6.1 lambda與函數(shù)接口 43
2.6.2 用匿名類與lambda表達式充當(dāng)函數(shù)接口并在Stream API中使用 44
2.7 Java的模塊系統(tǒng) 45
2.8 Java語言在第11~17版之間添加的特性 48
2.8.1 允許使用var關(guān)鍵字聲明lambda表達式的參數(shù)(Java SE 11,JEP-323) 48
2.8.2 switch表達式(Java SE 14,JEP-361) 49
2.8.3 文本塊(Java SE 15,JEP-378) 49
2.8.4 instanceof運算符的模式匹配功能(Java SE 16,JEP-394) 50
2.8.5 record(Java SE 16,JEP-395) 50
2.8.6 sealed類(Java SE 17,JEP-409) 50
2.8.7 Java API采用UTF-8作為默認字符集(Java SE 18,JEP-400) 51
2.8.8 帶有模式匹配功能的switch(Java SE 18,Second Preview,JEP-420) 52
2.9 Java的并發(fā) 52
2.9.1 從線程到執(zhí)行器 52
2.9.2 執(zhí)行任務(wù)的兩種方式 54
2.10 小結(jié) 55
2.11 習(xí)題 56
2.12 參考資料 56
第二部分 用Java語言實現(xiàn)標(biāo)準(zhǔn)的設(shè)計模式
第3章 創(chuàng)建型設(shè)計模式 61
3.1 技術(shù)準(zhǔn)備 61
3.2 從類怎么變成對象說起 61
3.3 工廠方法模式—根據(jù)輸入的數(shù)據(jù)創(chuàng)建對象 63
3.3.1 動機 63
3.3.2 該模式在JDK中的運用 63
3.3.3 范例代碼 64
3.3.4 模式小結(jié) 66
3.4 抽象工廠模式—用適當(dāng)?shù)墓S方法創(chuàng)建某個系列的產(chǎn)品 66
3.4.1 動機 67
3.4.2 該模式在JDK中的運用 67
3.4.3 范例代碼 67
3.4.4 模式小結(jié) 69
3.5 建造者模式—實例化復(fù)雜的對象 70
3.5.1 動機 70
3.5.2 該模式在JDK中的運用 70
3.5.3 范例代碼 71
3.5.4 模式小結(jié) 72
3.6 原型模式—克隆對象 73
3.6.1 動機 73
3.6.2 該模式在JDK中的運用 73
3.6.3 范例代碼 74
3.6.4 模式小結(jié) 76
3.7 單例模式—確保某個類只存在一個實例 77
3.7.1 動機 77
3.7.2 該模式在JDK中的運用 77
3.7.3 范例代碼 77
3.7.4 模式小結(jié) 79
3.8 對象池模式—提高性能 80
3.8.1 動機 80
3.8.2 該模式在JDK中的運用 80
3.8.3 范例代碼 80
3.8.4 模式小結(jié) 82
3.9 惰性初始化模式—按需初始化對象 83
3.9.1 動機 83
3.9.2 該模式在JDK中的運用 83
3.9.3 范例代碼 84
3.9.4 模式小結(jié) 86
3.10 依賴注入模式—減少類之間的依賴關(guān)系 86
3.10.1 動機 86
3.10.2 該模式在JDK中的運用 87
3.10.3 范例代碼 87
3.10.4 模式小結(jié) 90
3.11 小結(jié) 91
3.12 習(xí)題 92
3.13 參考資料 92
第4章 結(jié)構(gòu)型設(shè)計模式 93
4.1 技術(shù)準(zhǔn)備 93
4.2 適配器模式—讓不兼容的對象變得兼容 93
4.2.1 動機 93
4.2.2 該模式在JDK中的運用 94
4.2.3 范例代碼 94
4.2.4 模式小結(jié) 97
4.3 橋接模式—獨立地解耦對象和開發(fā)對象 97
4.3.1 動機 97
4.3.2 該模式在JDK中的運用 97
4.3.3 范例代碼 98
4.3.4 模式小結(jié) 100
4.4 組合模式—用相同的方式處理不同的對象 100
4.4.1 動機 100
4.4.2 該模式在JDK中的運用 100
4.4.3 范例代碼 101
4.4.4 模式小結(jié) 102
4.5 修飾器模式—擴展對象的功能 102
4.5.1 動機 102
4.5.2 該模式在JDK中的運用 103
4.5.3 范例代碼 103
4.5.4 模式小結(jié) 105
4.6 外觀模式—簡化程序與某一群對象之間的通信邏輯 105
4.6.1 動機 105
4.6.2 該模式在JDK中的運用 105
4.6.3 范例代碼 106
4.6.4 模式小結(jié) 107
4.7 過濾器模式—根據(jù)條件選出需要的對象 107
4.7.1 動機 107
4.7.2 該模式在JDK中的運用 107
4.7.3 范例代碼 107
4.7.4 模式小結(jié) 110
4.8 享元模式—跨應(yīng)用程序共享對象  110
4.8.1 動機  110
4.8.2 該模式在JDK中的運用  110
4.8.3 范例代碼  110
4.8.4 模式小結(jié)  112
4.9 前端控制器模式—統(tǒng)一處理請求  112
4.9.1 動機  112
4.9.2 該模式在JDK中的運用  113
4.9.3 范例代碼  113
4.9.4 模式小結(jié)  115
4.10 標(biāo)記模式—識別實例  115
4.10.1 動機  115
4.10.2 該模式在JDK中的運用  115
4.10.3 范例代碼  116
4.10.4 模式小結(jié)  118
4.11 模塊模式—利用模塊的概念來管理各個組件  118
4.11.1 動機  118
4.11.2 該模式在JDK中的運用  118
4.11.3 范例代碼  118
4.11.4 模式小結(jié)  120
4.12 代理模式—為對象提供占位符  120
4.12.1 動機  120
4.12.2 該模式在JDK中的運用  121
4.12.3 范例代碼  121
4.12.4 模式小結(jié)  122
4.13 孿生模式—在Java語言中實現(xiàn)多重繼承  122
4.13.1 動機  122
4.13.2 范例代碼  123
4.13.3 模式小結(jié)  124
4.14 小結(jié)  124
4.15 習(xí)題  125
4.16 參考資料  125
第5章 行為型設(shè)計模式  126
5.1 技術(shù)準(zhǔn)備  126
5.2 緩存模式—降低程序開銷  126
5.2.1 動機  127
5.2.2 該模式在JDK中的運用  127
5.2.3 范例代碼  127
5.2.4 模式小結(jié)  129
5.3 責(zé)任鏈模式—清晰而靈活地處理事件  129
5.3.1 動機  129
5.3.2 該模式在JDK中的運用  130
5.3.3 范例代碼  130
5.3.4 模式小結(jié)  131
5.4 命令模式—把信息轉(zhuǎn)化成相應(yīng)的動作  132
5.4.1 動機  132
5.4.2 該模式在JDK中的運用  132
5.4.3 范例代碼  132
5.4.4 模式小結(jié)  133
5.5 解釋器模式—賦予上下文意義  134
5.5.1 動機  134
5.5.2 該模式在JDK中的運用  134
5.5.3 范例代碼  134
5.5.4 模式小結(jié)  136
5.6 迭代器模式—檢查所有元素  136
5.6.1 動機  136
5.6.2 該模式在JDK中的運用  136
5.6.3 范例代碼  136
5.6.4 模式小結(jié)  138
5.7 中介者模式—讓對象之間更好地交換信息  138
5.7.1 動機  138
5.7.2 該模式在JDK中的運用  139
5.7.3 范例代碼  139
5.7.4 模式小結(jié)  140
5.8 備忘錄模式—把對象恢復(fù)到應(yīng)有的狀態(tài)  140
5.8.1 動機  140
5.8.2 該模式在JDK中的運用  140
5.8.3 范例代碼  140
5.8.4 模式小結(jié)  142
5.9 空對象模式—避免空指針異常  143
5.9.1 動機  143
5.9.2 該模式在JDK中的運用  143
5.9.3 范例代碼  143
5.9.4 模式小結(jié)  144
5.10 觀察者模式—讓相關(guān)各方都得到通知  145
5.10.1 動機  145
5.10.2 該模式在JDK中的運用  145
5.10.3 范例代碼  145
5.10.4 模式小結(jié)  146
5.11 管道模式—處理實例階段  146
5.11.1 動機  147
5.11.2 該模式在JDK中的運用  147
5.11.3 范例代碼  147
5.11.4 模式小結(jié)  148
5.12 狀態(tài)模式—變更對象的內(nèi)部行為  149
5.12.1 動機  149
5.12.2 該模式在JDK中的運用  149
5.12.3 范例代碼  149
5.12.4 模式小結(jié)  150
5.13 策略模式—切換對象的行為  150
5.13.1 動機  151
5.13.2 該模式在JDK中的運用  151
5.13.3 范例代碼  151
5.13.4 模式小結(jié)  152
5.14 模板模式—制定標(biāo)準(zhǔn)的處理流程  153
5.14.1 動機  153
5.14.2 該模式在JDK中的運用  153
5.14.3 范例代碼  153
5.14.4 模式小結(jié)  155
5.15 訪問者模式—根據(jù)對象的類型執(zhí)行代碼  155
5.15.1 動機  155
5.15.2 該模式在JDK中的運用  155
5.15.3 范例代碼  155
5.15.4 模式小結(jié)  157
5.16 小結(jié)  158
5.17 習(xí)題  158
5.18 參考資料  159
第三部分 其他重要的模式與反模式
第6章 并發(fā)設(shè)計模式  163
6.1 技術(shù)準(zhǔn)備  163
6.2 主動對象模式—解耦方法的執(zhí)行時機與觸發(fā)時機  164
6.2.1 動機  164
6.2.2 范例代碼  164
6.2.3 模式小結(jié)  167
6.3 異步方法調(diào)用模式—讓任務(wù)以非阻塞的方式執(zhí)行  167
6.3.1 動機  167
6.3.2 范例代碼  167
6.3.3 模式小結(jié)  169
6.4 阻行模式—延遲執(zhí)行,直到前一個任務(wù)完成  170
6.4.1 動機  171
6.4.2 范例代碼  171
6.4.3 模式小結(jié)  173
6.5 雙重檢查鎖模式—提供唯一的對象實例  173
6.5.1 動機  173
6.5.2 范例代碼  174
6.5.3 模式小結(jié)  176
6.6 讀寫鎖模式—實現(xiàn)有目的的線程阻塞  176
6.6.1 動機  176
6.6.2 范例代碼  177
6.6.3 模式小結(jié)  178
6.7 生產(chǎn)者–消費者模式—解耦執(zhí)行邏輯  180
6.7.1 動機  180
6.7.2 范例代碼  180
6.7.3 模式小結(jié)  181
6.8 調(diào)度器模式—執(zhí)行孤立的任務(wù)  182
6.8.1 動機  182
6.8.2 范例代碼  183
6.8.3 模式小結(jié)  187
6.9 線程池模式—有效地利用線程  187
6.9.1 動機  187
6.9.2 范例代碼  187
6.9.3 模式小結(jié)  188
6.10 小結(jié)  189
6.11 習(xí)題  190
6.12 參考資料  190
第7章 常見的反模式  191
7.1 技術(shù)準(zhǔn)備  192
7.2 什么是反模式,怎樣發(fā)現(xiàn)反模式  192
7.2.1 從是否違背開發(fā)原則的角度發(fā)現(xiàn)反模式  192
7.2.2 注意那些有可能形成瓶頸的技術(shù)債務(wù)  192
7.2.3 不要錯誤地使用Java平臺的功能  193
7.2.4 選擇合適的工具  195
7.2.5 代碼壞味反模式小結(jié)  196
7.3 認識軟件開發(fā)中常見的反模式  197
7.3.1 意大利面條式的代碼  197
7.3.2 復(fù)制粘貼式編程  198
7.3.3 blob  198
7.3.4 熔巖流  199
7.3.5 功能分散  199
7.3.6 船錨  199
7.3.7 軟件開發(fā)中的反模式小結(jié)  200
7.4 軟件架構(gòu)中的反模式  200
7.4.1 金錘  200
7.4.2 頻繁更替  200
7.4.3 輸入問題  201
7.4.4 雷區(qū)探險  201
7.4.5 用意不明  202
7.4.6 幽靈  202
7.4.7 死路  202
7.4.8 軟件架構(gòu)中的反模式小結(jié)  203
7.5 小結(jié)  203
7.6 參考資料  204
習(xí)題參考答案  205
第1章  205
第2章  205
第3章  206
第4章  206
第5章  207
第6章  207

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號