《Java組件設計》

《Java組件設計》

本書主要講解企業套用系統中核心組件的設計原則與最佳實踐,澄清設計模式、數據結構、多執行緒、接口設計等多個高階技術領域中“流行”的認知誤區,通過大量的組件實例分析,為讀者精彩地講解組件設計這一最具技術含量的領域需要考慮的核心問題、設計方案與最佳實踐。本書主要涵蓋三部分的內容:第1篇,主要講解了應用程式的架構、組件的定義和組件核心設計原則。

基本信息

圖書信息

作 者:孔德生編著
出版社:電子工業出版社
出版時間:2009-2-1
Java組件設計Java組件設計

頁 數:324頁
開 本:16開
ISBN:9787121081651
所屬分類:圖書>>計算機>>程式設計
定價:49.00

宣傳語

本書幫您圓滿實現快速遞交高質量軟體產品之夢!

內 容 簡 介

本書主要講解企業套用系統中核心組件的設計原則與最佳實踐,澄清設計模式、數據結構、多執行緒、接口設計等多個高階技術領域中“流行”的認知誤區,通過大量的組件實例分析,為讀者精彩地講解組件設計這一最具技術含量的領域需要考慮的核心問題、設計方案與最佳實踐。本書主要涵蓋三部分的內容:第1篇,主要講解了應用程式的架構、組件的定義和組件核心設計原則。這些原則,都是在大量的企業軟體實踐中濃縮提煉的精華;第二部分,對Java語言的高級主題進行了詳盡的闡述,作為組件實戰的必需必備基礎功力;第三部分,對企業套用的核心組件,進行需求分析、設計和實現。核心組件包括:配置組件、Socket通信組件、日誌組件、資料庫訪問組件、JSON轉換器和許可權組件。
本書主要定位於軟體架構師、設計師、高級開發人員在企業實際套用開發中的參考讀物,也適合大專院校相關專業作為教材輔導圖書閱讀。

前 言

設計,決定了軟體質量!
組件化設計和構建軟體系統,是實現快速發布高質量軟體產品之夢的最佳實踐!
組件設計,凝聚了需求分析、面向對象、設計模式、數據結構、多執行緒等一系列高階領域的核心精髓!
Java語言,是網際網路上的卓越語言,從誕生的那一天開始,就被很多軟體工程師所青睞,不斷在世界的每個角落開花結果,套用日益廣泛。
java開源世界,如火如荼地發展,無數的框架、組件如雨後春筍般湧現,極大地推進了Java技術在各個領域的商業套用。
然而,由於設計者的眼界、經驗和水平等的限制,Java開源框架、組件參差不齊,優秀者並不多見。在企業軟體開發中,Java往往成了臃腫、笨拙、低效等的代名詞。功能最簡單的Java組件也要幾十、上百個類檔案,使用組件需要引入的Jar檔案少則幾兆位元組,多則幾十兆、上百兆位元組。因此,所謂鼓吹的輕量級組件,不過是個噱頭而已。
筆者從事企業軟體開發十餘載,專注平台和組件開發領域,深知組件設計與開發過程的“高處不勝寒”。因此,在本書中,筆者將自己對組件技術的認識和心得進行總結和提煉,為讀者奉上一份Java組件設計領域的精彩技術大餐。
本書定位
本書面向軟體架構師、設計師、高級開發人員,講解企業套用中核心組件的設計原則與最佳實踐。
本書將澄清設計模式、數據結構、多執行緒、接口設計等多個高階技術領域中“流行”的認知誤區,通過大量的組件實例分析,為讀者精彩講解組件設計這一最具技術含量的領域需要考慮的核心問題、設計方案與最佳實踐。
本書的內容
這本書主要涵蓋三部分的內容:
第1篇,主要講解了應用程式的架構、組件的定義和組件核心設計原則。這些原則,都是在大量的企業軟體實踐中濃縮提煉的精華。
第2篇,對Java語言的高級主題進行了詳盡的闡述,作為組件實戰的必需必備基礎功力。
第3篇,對企業套用的核心組件,進行需求分析、設計和實現。核心組件包括:
第4章,配置組件第7章,資料庫訪問組件
第5章,Socket通信組件第8章,JSON轉換器
第6章,日誌組件第9章,許可權組件
本書代碼下載地址為http://www.broadview.com.cn。
特别致謝
衷心感謝周堅先生,在華為公司期間對我無私的指導,使我有幸步入設計領域的高級殿堂!
衷心感謝我的父親、母親和兄弟姐妹,是你們的關懷照顧和言傳身教,讓我懂得人生的意義!
衷心感謝我的妻子,默默忍受我長期的熬夜,不斷給我關心、支持和鼓勵!
衷心感謝我的兒子,給我帶來無盡的歡樂!
衷心感謝在我的生活、工作中,幫助過我的每一個人!
孔德生
2008年12月

目 錄

第1篇組件設計總括
第1章組件設計概述2
1.1套用軟體的總體架構2
1.2組件定義及與其相關概念的澄清4
1.3總結7
第2章組件設計原則8
2.1組件定位:精準地解決共性問題10
2.2組件設計:無配置檔案11
2.3組件設計:與使用者概念一致12
2.4組件設計:業務無關的中立性13
2.5組件設計實現:對使用環境無假設13
2.6組件設計實現:單類設計和實現14
2.7總結14
第2篇組件設計的基礎知識
第3章預備知識16
3.1Java語法深入講解16
3.1.1static16
3.1.2嵌套類18
3.1.3靜態嵌套類20
3.2反射21
3.3數據結構23
3.3.1ArrayList23
3.3.2LinkedList24
3.3.3HashSet24
3.3.4HashMap25
3.4泛型26
3.4.1泛型簡介26
3.4.2泛型套用在接口上30
3.4.3泛型套用在類上30
3.4.4泛型套用在方法上31
3.4.5限制泛型的可用類型31
3.4.6通配符泛型34
3.4.7泛型深入36
3.5執行緒42
3.5.1執行緒基礎42
3.5.2多執行緒同步46
3.5.3執行緒的阻塞50
3.5.4守護執行緒52
3.5.5多執行緒範例52
第3篇組件設計
第4章配置組件61
4.1配置檔案格式61
4.2DTD,還是Schema64
4.3接口設計68
4.3.1設計思路68
4.3.2複合元素映射69
4.3.3接口設計73
4.3.4接口重構78
4.4接口實現85
4.4.1主要實現結構85
4.4.2DOM根節點解析86
4.4.3XML數據設定為對象屬性87
4.4.4補充說明92
4.5總結92
第5章Socket通信組件93
5.1使用場景93
5.2需求分析93
5.2.1系統內,還是系統間94
5.2.2TCP,還是UDP94
5.2.3點對點,還是廣播95
5.2.4單連線,還是多連線95
5.2.5安全問題96
5.2.6包邊界問題96
5.2.7連線管理97
5.3客戶端接口設計99
5.3.1設計原則99
5.3.2配置接口100
5.3.3功能接口101
5.3.4事件通知接口101
5.4客戶端技術實現104
5.4.1技術實現選型104
5.4.2配置接口實現104
5.4.3功能接口實現104
5.5服務端接口設計113
5.5.1設計原則113
5.5.2配置接口114
5.5.3功能接口115
5.5.4事件通知接口116
5.6服務端技術實現118
5.6.1技術實現選型118
5.6.2配置接口實現119
5.6.3功能接口實現120
5.7總結133
第6章日誌組件134
6.1使用場景134
6.2需求分析137
6.2.1單例,或多例137
6.2.2異步,還是同步137
6.2.3單執行緒,還是多執行緒137
6.2.4集中監控138
6.2.5線上修改配置138
6.2.6日誌格式139
6.2.7日誌內容139
6.2.8容錯考慮140
6.3接口設計141
6.3.1核心設計要點141
6.3.2配置接口設計141
6.3.3功能接口設計142
6.3.4日誌轉換接口144
6.4接口實現145
6.4.1技術選型145
6.4.2配置接口實現145
6.4.3功能接口實現148
6.4.4日誌轉換接口實現153
6.5總結153
第7章資料庫訪問組件154
7.1需求分析155
7.1.1資料庫類型155
7.1.2資料庫連線155
7.1.3單實例,還是多實例156
7.1.4ORM,還是SQL156
7.1.5什麼樣的結果集156
7.1.6結果集分頁、合併157
7.1.7存儲過程157
7.1.8對象的直接數據操作158
7.1.9事務159
7.1.10快取159
7.2DBAccess接口設計160
7.2.1設計思路160
7.2.2配置接口設計163
7.2.3連線管理164
7.2.4SQL接口設計166
7.2.5批操作接口169
7.2.6存儲過程接口設計169
7.2.7事務接口178
7.2.8結果集轉換為對象179
7.2.9對象的直接資料庫操作180
7.2.10接口匯總181
7.3DBMonitor設計186
7.4數據對象映射規則設計189
7.4.1規則表示法189
7.4.2定義Annotation190
7.4.3代碼生成工具193
7.5DataSet設計199
7.5.1基本信息200
7.5.2數據的隨機訪問200
7.5.3列值讀取201
7.5.4數據的增、刪、改202
7.5.5數據集的分割、合併203
7.5.6DataSetMetaData204
7.5.7DataSet接口匯總205
7.6DBAccess接口實現207
7.6.1配置接口實現207
7.6.2連線管理實現208
7.6.3事務接口實現214
7.6.4SQL接口實現216
7.6.5批操作接口實現222
7.6.6存儲過程接口實現223
7.6.7數據集轉換為對象實現229
7.6.8對象的直接資料庫操作實現235
7.7總結237
第8章JSON轉換器238
8.1引言238
8.1.1傳統Web套用238
8.1.2Ajax套用239
8.1.3數據規則241
8.2需求分析243
8.2.1需求場景243
8.2.2核心功能244
8.3接口設計247
8.3.1設計原則247
8.3.2JSON->Java248
8.3.3Java->JSON248
8.3.4接口匯總249
8.4接口實現249
8.4.1json2Obj實現249
8.4.2obj2Json實現254
8.5總結257
第9章許可權組件258
9.1引言258
9.2需求分析258
9.2.1套用場景258
9.2.2許可權分類260
9.2.3角色265
9.2.4組織結構266
9.2.5需求匯總266
9.3接口設計267
9.3.1標識用戶268
9.3.2獲得發起請求的用戶268
9.3.3攔截HTTP請求270
9.3.4許可權組件和套用系統之間訪問270
9.3.5套用系統的許可權定義273
9.3.6套用系統調用許可權組件282
9.3.7用戶許可權變更282
9.3.8Session逾時失效283
9.3.9AuthFilter接口匯總285
9.3.10AuthFilterImpl實現原型286
9.3.11部署配置287
9.4接口實現288
9.4.1實現思路288
9.4.2私有成員變數288
9.4.3init方法實現290
9.4.4doFilter方法實現293
9.4.5canAccess方法實現298
9.4.6reloadRoleAuths方法實現298
9.4.7sessionDestroy方法實現300
9.5許可權套用示例301
9.5.1系統簡介301
9.5.2運行示例302
9.5.3實現介紹305
9.6總結308

重 點 關 注

共性的業務問題,是組件的產生來源。10
技術與業務對齊,這是組件設計的第一位重要原則。11
最簡單的組件,就是一個類。14
高內聚!高內聚!單類組件,簡單到極致!14
本質上講,static關鍵字聲明了一個全局變數。16
在泛型代碼中,根本就沒有參數化類型的信息。39
發布函式的原型相對穩定,不會頻繁發生修改。76
從接口上看,只有一個Static方法,沒有任何Get或Set方法,因此不滿足IOC容器的規範,無法被放入IOC容器中,因此也無法與其他組件進行基於IOC容器的集成。這可是個大問題!!83
因此,使用IOC容器作為物理部署、實施的配置方式,是不合適的。這裡編寫的配置組件,是用於部署實施的有力武器!83
獲取滿足條件的Key集合,遍歷Key集合,取出每個Key,判斷Key是否是下面三種狀態之一:acceptable,readable,writable,從而對應地進行接收連線、數據讀取、傳送數據的操作。127
大量的軟體開發實踐證明,進行複雜數據操作的套用系統中,存儲過程是解決問題的最有效方案。158
應用程式的開發者,不需要編寫太多類,就可以將結果集轉換為對象,獲得類似ORM框架的功能。最理想的情況就是一個類也不增加。179
作為組件設計者,應該讓組件的使用者做且僅做他們必須做的事情,摒棄任何不必要、煩瑣、無意義的環節。189
這種情況下,如何實現互相之間的訪問,就成了一個難題!271
大多數Web套用,使用Spring作為IOC容器來實例化、配置各種後台組件。而Spring自身在DeploymentDescriptor中是作為一個Listener被WebContainer實例化的。Listener的初始化過程,早於Filter的初始化過程,因此當許可權組件開始被WebContainer初始化時,SpringIOC容器和IOC容器內的各種後台組件都已經初始化完畢。這樣,在許可權組件的初始化參數中,配置一個類名,應用程式提供這個類的實現,而許可權組件動態實例化這個類,通過這個類的實例作為橋樑,獲得應用程式實例的訪問,這種方式是可行的。271
只有角色產生了變化,才需要許可權組件更新內部的許可權數據。而用戶變化、用戶許可權、用戶角色變化等,都不需要許可權組件更新內部的許可權數據。282

相關詞條

相關搜尋

熱門詞條

聯絡我們