第Ⅰ部分JavaEE設計模式介紹第1章設計模式概覽 3
1.1何為設計模式 4
1.1.1如何檢測模式,為何需要模式 6
1.1.2現實世界中的模式 6
1.2設計模式基礎 8
1.3企業模式 8
1.3.1從Java到企業級Java 9
1.3.2企業Java模式的出現 10
1.3.3設計模式與企業模式 11
1.3.4當傳統設計模式遇到JavaEE 12
1.3.5當模式變成反模式 13
1.4小結 14
1.5相關資料 14
第2章JavaEE基礎 17
2.1多層架構 19
2.2客戶端層 20
2.3中間層 21
2.3.1Web層 21
2.3.2業務層 22
2.4EIS層 23
2.5JavaEE服務器 24
2.6JavaEEWebProfile 25
2.7JavaEE核心原則 25
2.8約定優于配置 26
2.9上下文與依賴注入 26
2.10攔截器 28
2.11小結 30
2.12本章練習 30
第Ⅱ部分實現JavaEE設計模式
第3章門面模式 33
3.1何為門面 34
3.2使用普通代碼實現門面模式 36
3.3使用JavaEE實現門面模式 38
3.3.1使用無狀態Bean實現門面 38
3.3.2使用有狀態Bean實現門面 41
3.4何時以及何處該使用門面模式 42
3.5小結 43
3.6本章練習 43
3.7相關資料 43
第4章單例模式 45
4.1何為單例? 46
4.1.1單例模式類圖 47
4.1.2使用普通代碼實現單例模式 48
4.2使用JavaEE實現單例模式 53
4.2.1單例Bean 53
4.2.2在啟動時使用單例 54
4.2.3確定啟動順序 56
4.2.4管理并發 59
4.3何處以及何時該使用單例模式 63
4.4小結 63
4.5本章練習 64
4.6相關資料 65
第5章依賴注入與CDI 67
5.1何為依賴注入? 68
5.2使用普通代碼實現DI 69
5.3使用JavaEE實現DI 73
5.3.1@Named注解 75
5.3.2上下文與依賴注入(CDI) 76
5.3.3CDI與EJB 77
5.3.4CDIBean 77
5.3.5@Inject注解 79
5.3.6上下文與作用域 79
5.3.7命名與EL 80
5.3.8用于BackingJSF的CDIBean 81
5.3.9限定符 81
5.3.10Alternatives 82
5.3.11Stereotypes 83
5.3.12通過CDI實現的其他模式 84
5.4小結 84
5.5本章練習 85
5.6相關資料 85
第6章工廠模式 87
6.1何為工廠? 88
6.2工廠方法 89
6.3抽象工廠 94
6.4使用JavaEE實現工廠模式 96
6.5何處以及何時該使用工廠模式 110
6.6小結 111
6.7本章練習 111
6.8相關資料 111
第7章裝飾模式 113
7.1何為裝飾器? 114
7.2使用普通代碼實現裝飾模式 116
7.3使用JavaEE實現裝飾模式 121
7.4何處以及何時該使用裝飾模式 129
7.5小結 130
7.6本章練習 130
7.7相關資料 131
第8章面向方面編程(攔截器) 133
8.1何為面向方面編程? 134
8.2使用普通代碼實現AOP 137
8.3JavaEE中的方面——攔截器 140
8.3.1攔截器生命周期 145
8.3.2默認級別的攔截器 146
8.3.3攔截器順序 147
8.3.4CDI攔截器 150
8.4何處以及何時該使用攔截器 153
8.5小結 154
8.6相關資料 155
第9章異步 157
9.1何為異步編程 158
9.2使用普通代碼實現異步模式 161
9.3JavaEE中的異步編程 164
9.3.1異步Bean 164
9.3.2異步Servlet 167
9.4何處以及何時該使用異步編程 172
9.5小結 174
9.6本章練習 174
9.7相關資料 175
第10章定時器服務 177
10.1何為定時器服務 178
10.2使用JavaEE實現定時器 181
10.2.1自動化定時器 181
10.2.2編程式定時器 183
10.2.3定時器表達式 187
10.2.4事務 190
10.3小結 191
10.4本章練習 192
10.5相關資料 192
第11章觀察者模式 193
11.1何為觀察者? 194
11.1.1說明 195
11.1.2觀察者類圖 197
11.2使用普通代碼實現觀察者模式 197
11.3使用JavaEE實現觀察者模式 200
11.4何處以及何時該使用觀察者模式 209
11.5小結 210
11.6本章練習 211
11.7相關資料 211
第12章數據訪問模式 213
12.1何為數據訪問模式? 214
12.2數據訪問模式概覽 216
12.2.1數據傳輸對象模式 216
12.2.2Java持久化架構API與對象關系映射 217
12.3使用JavaEE實現數據訪問模式 218
12.4何處以及何時該使用數據訪問模式 227
12.5小結 227
12.6本章練習 228
12.7相關資料 228
第13章REST風格的WebService 229
13.1何為REST? 230
13.2REST的6個約束 232
13.2.1客戶端-服務器 233
13.2.2統一接口 233
13.2.3無狀態 233
13.2.4可緩存 233
13.2.5分層系統 234
13.2.6按需編碼 234
13.3RESTAPI的理查森能力成熟度模型 234
13.3.1級別0:POX(PlainOldXML)沼澤 235
13.3.2級別1:資源 235
13.3.3級別2:HTTP動詞 235
13.3.4級別3:超媒體控件 235
13.4設計REST風格的API 235
13.4.1資源命名 236
13.4.2名詞而非動詞 237
13.4.3自說明 237
13.4.4復數而非單數 237
13.4.5HTTP方法 238
13.4.6GET 238
13.4.7POST 239
13.4.8PUT 239
13.4.9DELETE 240
13.5REST實戰 240
13.5.1users名詞 240
13.5.2topics名詞與posts名詞 242
13.6使用JavaEE實現REST 244
13.7HATEOAS 249
13.8何處以及何時該使用REST 253
13.9小結 253
13.10本章練習 254
13.11相關資料 254
第14章模型、視圖與控制器模式 255
14.1何為MVC設計模式? 256
14.2使用普通代碼實現MVC模式 260
14.3使用JavaEE實現MVC模式 265
14.4FacesServlet 265
14.5使用FacesServlet實現MVC 266
14.6何處以及何時該使用MVC模式 269
14.7小結 269
14.8本章練習 270
14.9相關資料 270
第15章JavaEE中的其他模式 271
15.1何為WebSockets? 272
15.2何為面向消息的中間件 275
15.3何為微服務架構? 277
15.3.1單塊架構 278
15.3.2可伸縮性 279
15.3.3分解為服務 280
15.3.4微服務的好處 281
15.3.5天下沒有免費的午餐 282
15.3.6結論 283
15.4一些反模式 284
15.4.1超級類 284
15.4.2面條架構 284
15.4.3哥倫布先生 285
15.4.4利益之交 285
15.4.5前沿技術 286
15.4.6輔助類 286
15.5相關資料 287
第Ⅲ部分總結
第16章設計模式:好處、壞處與丑陋之處 291
16.1好處:通往成功之路的模式 292
16.2壞處:模式的過度使用與濫用 294
16.3丑陋之處 296
16.4小結 298
16.5相關資料 298