Java 設計模式及實踐 (Design Patterns and Best Practices in Java: A comprehensive guide to building smart and reusable code in Java)

Java 設計模式及實踐 (Design Patterns and Best Practices in Java: A comprehensive guide to building smart and reusable code in Java)

作者: [印度] 卡馬爾米特·辛格(Kamalmeet Singh)   [荷蘭] 艾德里安·伊恩庫列斯庫(Adrian Ianculescu)  [羅馬尼亞] 路西安-保羅·托爾耶(Lucian-Paul Torje)
出版社: 機械工業
出版在: 2019-06-01
ISBN-13: 9787111629436
ISBN-10: 7111629434





內容描述


對於開發人員來說,掌握設計模式有助於提高代碼質量,促進代碼重用,增強架構健壯性。隨著編程語言的不斷發展,新特性層出不窮,在其被廣泛使用前,程序員往往需要花費大量時間去理解和掌握。本書的目的就是降低新技術趨勢的接受難度,為程序員提供良好的應用實踐。
本書向你展示Java語言中更加智能化的編碼實例。書中首先介紹面向對象編程(OOP)和函數式編程(FP)範式,然後描述常用設計模式的經典使用方法,並解釋如何利用函數式編程特性改變經典的設計模式。
你將學習混合使用OOP和FP的實現方式,然後學習響應式編程模型——一種為了編寫更好的代碼而將OOP和FP結合使用的方法。之後,本書將介紹從MVC架構向微服務和無服務器架構轉變的發展趨勢,最後介紹Java新版本的功能特性及其實踐。
通過本書的學習,你可以有效地解決開發應用程序過程中的常見問題,輕松地應對各種規模項目的擴展和維護。具體包括:
理解面向對象編程和函數式編程範式
探究傳統Java設計模式的使用方式
瞭解Java的新功能特性及其對經典設計模式的影響
瞭解響應式編程及其作為增強版的函數式編程的原因
應用響應式編程模式並探尋其解決常見問題的好方法
瞭解架構的發展趨勢和從MVC架構到無服務器應用架構的轉變
應用Java的新功能特性及其實踐


目錄大綱


譯者序
前言
關於作者
關於評審者
第1章 從面向物件到函數式編程 1
1.1 Java簡介 1
1.2 Java編程範式 2
1.2.1 命令式編程 2
1.2.2 面向物件編程 3
1.2.3 聲明式編程 6
1.2.4 函數式編程 6
1.3 流以及集合的使用 7
1.4 統一建模語言簡介 8
1.5 設計模式和原則 11
1.5.1 單一職責原則 12
1.5.2 開閉原則 13
1.5.3 裏氏替換原則 13
1.5.4 介面隔離原則 14
1.5.5 依賴倒置原則 16
1.6 總結 16
第2章 創建型模式 18
2.1 單例模式 18
2.1.1 同步鎖單例模式 19
2.1.2 擁有雙重校驗鎖機制的同步鎖單例模式 20
2.1.3 無鎖的線程安全單例模式 21
2.1.4 提前加載和延遲載入 21
2.2 工廠模式 22
2.2.1 簡單工廠模式 22
2.2.2 工廠方法模式 25
2.2.3 抽象工廠模式 27
2.2.4 簡單工廠、工廠方法與抽象工廠模式之間的對比 28
2.3 建造者模式 29
2.3.1 汽車建造者樣例 30
2.3.2 簡化的建造者模式 32
2.3.3 擁有方法鏈的匿名建造者 32
2.4 原型模式 33
2.5 物件池模式 34
2.6 總結 36
第3章 行為型模式 37
3.1 責任鏈模式 38
3.2 命令模式 40
3.3 解釋器模式 43
3.4 迭代器模式 47
3.5 觀察者模式 50
3.6 仲介者模式 51
3.7 備忘錄模式 53
3.8 狀態模式 55
3.9 策略模式 55
3.10 範本方法模式 56
3.11 空物件模式 57
3.12 訪問者模式 58
3.13 總結 59
第4章 結構型模式 60
4.1 適配器模式 61
4.2 代理模式 66
4.3 裝飾器模式 70
4.4 橋接模式 73
4.5 組合模式 76
4.6 外觀模式 79
4.7 享元模式 83
4.8 總結 88
第5章 函數式編程 89
5.1 函數式編程簡介 89
5.1.1 lambda運算式 91
5.1.2 純函數 92
5.1.3 引用透明性 92
5.1.4 初等函數 93
5.1.5 高階函數 93
5.1.6 組合 93
5.1.7 柯裏化 93
5.1.8 閉包 94
5.1.9 不可變性 95
5.1.10 函子 95
5.1.11 單子 96
5.2 Java中的函數式編程 97
5.2.1 lambda運算式 97
5.2.2 流 98
5.3 重新實現面向物件編程設計模式 102
5.3.1 單例模式 102
5.3.2 建造者模式 102
5.3.3 適配器模式 103
5.3.4 裝飾器模式 103
5.3.5 責任鏈模式 103
5.3.6 命令模式 104
5.3.7 解釋器模式 104
5.3.8 迭代器模式 104
5.3.9 觀察者模式 105
5.3.10 策略模式 105
5.3.11 範本方法模式 105
5.4 函數式設計模式 106
5.4.1 MapReduce 106
5.4.2 借貸模式 107
5.4.3 尾調用優化 108
5.4.4 記憶化 109
5.4.5 執行around方法 110
5.5 總結 111
第6章 回應式編程 112
6.1 什麼是回應式編程 113
6.2 RxJava簡介 114
6.3 安裝RxJava 115
6.3.1 Maven下的安裝 115
6.3.2 JShell下的安裝 116
6.4 Observable、Flowable、Observer和Subscription的含義 116
6.5 創建Observable 118
6.5.1 create操作符 118
6.5.2 defer操作符 119
6.5.3 empty操作符 120
6.5.4 from操作符 120
6.5.5 interval操作符 120
6.5.6 timer操作符 121
6.5.7 range操作符 121
6.5.8 repeat操作符 121
6.6 轉換Observable 122
6.6.1 subscribe操作符 122
6.6.2 buffer操作符 122
6.6.3 flatMap操作符 122
6.6.4 groupBy操作符 124
6.6.5 map操作符 124
6.6.6 scan操作符 125
6.6.7 window操作符 125
6.7 過濾Observable 125
6.7.1 debounce操作符 125
6.7.2 distinct操作符 126
6.7.3 elementAt操作符 126
6.7.4 f?ilter操作符 127
6.7.5 f?irst/last操作符 127
6.7.6 sample操作符 128
6.7.7 skip操作符 128
6.7.8 take操作符 128
6.8 組合Observable 128
6.8.1 combine操作符 129
6.8.2 join操作符 129
6.8.3 merge操作符 130
6.8.4 zip操作符 131
6.9 異常處理 131
6.9.1 catch操作符 131
6.9.2 do操作符 132
6.9.3 using操作符 133
6.9.4 retry操作符 133
6.10 線程調度器 134
6.11 Subject 135
6.12 示例項目 136
6.13 總結 139
第7章 回應式設計模式 140
7.1 回應模式 140
7.1.1 請求-回應模式 140
7.1.2 非同步通信模式 146
7.1.3 緩存模式 148
7.1.4 扇出與最快回應模式 149
7.1.5 快速失敗模式 150
7.2 彈性模式 150
7.2.1 斷路器模式 150
7.2.2 故障處理模式 151
7.2.3 有限佇列模式 151
7.2.4 監控模式 152
7.2.5 艙壁模式 152
7.3 柔性模式 152
7.3.1 單一職責模式 153
7.3.2 無狀態服務模式 154
7.3.3 自動伸縮模式 156
7.3.4 自包含模式 156
7.4 消息驅動通信模式 157
7.4.1 事件驅動通信模式 157
7.4.2 出版者-訂閱者模式 157
7.4.3 冪等性模式 158
7.5 總結 158
第8章 應用架構的發展趨勢 159
8.1 什麼是應用架構 159
8.2 分層架構 160
8.2.1 分層架構示例 162
8.2.2 tier和layer的區別 1




相關書籍

The Agile Samurai: How Agile Masters Deliver Great Software (Paperback)

作者 Jonathan Rasmusson

2019-06-01

Refactoring Databases: Evolutionary Database Design (Hardcover)

作者 Scott W. Ambler Pramodkumar J. Sadalage

2019-06-01

Embedded Systems: Analysis and Modeling with SysML, UML and AADL (Hardcover)

作者 Fabrice Kordon J?r?me Hugues Agusti Canals Alain Dohet

2019-06-01