從零學Java設計模式 Practical Design Patterns for Java Developers: Hone your software design skills by implementing popular design patterns in Java

Miroslav Wengner 譯 李寶珅//王貴財

相關主題

商品描述

本書以實用的設計模式為例,說明了Java近年來在改善文法上的進展,
同時在實現這些模式的過程中展現了語言特性、設計模式與平台效率之間的關係。
本書涵蓋23種傳統的設計模式、11種較常見的模式,以及8種適用於多執行緒環境的並發模式。
另外,本書也簡單介紹了15種反模式。
作者講解這些模式的時候不僅給了簡潔、直覺的範例程式碼,
而且也利用UML類別圖與JFR工具展示了運用此模式的程式所具備的架構及運作細節,
讓讀者更全面地了解模式對程式碼結構的影響,以及模式與Java虛擬機器的互動情況。
本書的特點在於將Java這種成熟的程式語言以及該語言最近新增的特性與各種設計模式結合起來,
告訴讀者如何充分發揮Java的特性與優勢,以便更能實現設計模式,避免陷入空談概念而無法落實的境地。

目錄大綱

譯者序

前 言
審校者簡介
第一部 設計模式與Java平台的功能
第1章 軟體設計模式入門 3
1.1 技術準備 3
1.2 程式設計:從符號到程式 3
1.3 OOP與APIE 5
1.3.1 封裝—隻公佈那些必須公佈的資訊 6
1.3.2 繼承—在應該創造新類別的時候創造 6
1.3.3 多態—根據需要表現出不同的行為 7
1.3.4 抽象—從細節中提取一組標準功能 9
1.3.5 把抽象、多態、繼承、封裝這四個概念貫穿起來 11
1.4 SOLID設計原則 12
1.4.1 單一功能原則—每個類別只負責一件事 13
1.4.2 開閉原則 13
1.4.3 里氏替換原則—子類別必須能夠當作超類別來使用 14
1.4.4 介面隔離原則 15
1.4.5 依賴反轉原則 17
1.5 設計模式為何如此重要 18
1.6 設計模式能夠解決哪些問題 18
1.7 小結 20
1.8 習題 21
1.9 參考資料 21
第2章 Java平台 22
2.1 技術準備 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記憶體模型 30
2.4.1 JMM 30
2.4.2 GC與自動記憶體管理 32
2.5 Java的核心API 35
2.5.1 原型與包裝器型式 36
2.5.2 與String有關的API 37
2.5.3 數組 39
2.5.4 Java集合架構 40
2.5.5 Math API 42
2.6 函數式程式設計與Java 43
2.6.1 lambda與函數介面 43
2.6.2 用匿名類別與lambda表達式充當函數介面並在Stream API中使用 44
2.7 Java的模組系統 45
2.8 Java語言在第11~17版之間所添加的特性 48
2.8.1 允許使用var關鍵字宣告lambda表達式的參數(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的同時 52
2.9.1 從執行緒到​​執行器 52
2.9.2 執行任務的兩種方式 54
2.10 小結 55
2.11 習題 56
2.12 參考資料 56
第二部分 用Java語言實現標準的設計模式
第3章 創建型設計模式 61
3.1 技術準備 61
3.2 從類別怎麼變成物件說起 61
3.3 工廠方法模式—根據輸入的資料建立物件 63
3.3.1 動機 63
3.3.2 此模式在JDK中的運用 63
3.3.3 範例代碼 64
3.3.4 模式小結 66
3.4 抽象工廠模式—用適當的工廠方法創造某系列的產品 66
3.4.1 動機 67
3.4.2 此模式在JDK中的運用 67
3.4.3 範例代碼 67
3.4.4 模式小結 69
3.5 建造者模式—實例化複雜的物件 70
3.5.1 動機 70
3.5.2 此模式在JDK中的運用 70
3.5.3 範例代碼 71
3.5.4 模式小結 72
3.6 原型模式—克隆物件 73
3.6.1 動機 73
3.6.2 此模式在JDK中的運用 73
3.6.3 範例代碼 74
3.6.4 模式小結 76
3.7 單例模式—確保某一類別只存在一個實例 77
3.7.1 動機 77
3.7.2 此模式在JDK中的運用 77
3.7.3 範例代碼 77
3.7.4 模式小結 79
3.8 物件池模式—提高效能 80
3.8.1 動機 80
3.8.2 此模式在JDK中的運用 80
3.8.3 範例代碼 80
3.8.4 模式小結 82
3.9 惰性初始化模式—按需初始化物件 83
3.9.1 動機 83
3.9.2 此模式在JDK中的運用 83
3.9.3 範例代碼 84
3.9.4 模式小結 86
3.10 依賴注入模式—減少類別之間的依賴關係 86
3.10.1 動機 86
3.10.2 此模式在JDK中的運用 87
3.10.3 範例代碼 87
3.10.4 模式小結 90
3.11 小結 91
3.12 習題 92
3.13 參考資料 92
第4章 結構型設計模式 93
4.1 技術準備 93
4.2 適配器模式—讓不相容的物件變得相容 93
4.2.1 動機 93
4.2.2 此模式在JDK中的運用 94
4.2.3 範例代碼 94
4.2.4 模式小結 97
4.3 橋接模式—獨立地解耦物件與開發物件 97
4.3.1 動機 97
4.3.2 此模式在JDK中的運用 97
4.3.3 範例代碼 98
4.3.4 模式小結 100
4.4 組合模式—用相同的方式處理不同的物件 100
4.4.1 動機 100
4.4.2 此模式在JDK中的運用 100
4.4.3 範例代碼 101
4.4.4 模式小結 102
4.5 修飾器模式—擴充物件的功能 102
4.5.1 動機 102
4.5.2 此模式在JDK中的運用 103
4.5.3 範例代碼 103
4.5.4 模式小結 105
4.6 外觀模式—簡化程式與某一群物件之間的通訊邏輯 105
4.6.1 動機 105
4.6.2 此模式在JDK中的運用 105
4.6.3 範例代碼 106
4.6.4 模式小結 107
4.7 過濾器模式—依條件選出所需的物件 107
4.7.1 動機 107
4.7.2 此模式在JDK中的運用 107
4.7.3 範例代碼 107
4.7.4 模式小結 110