軟件框架設(shè)計(jì)的藝術(shù)是一本幫助你解決API 設(shè)計(jì)方面的問題,分別指出學(xué)習(xí)API 設(shè)計(jì)是需要進(jìn)行科學(xué)的訓(xùn)練的、Java 語言在設(shè)計(jì)方面的理論及設(shè)計(jì)和維護(hù)API 時(shí)的常見情況,并提供了各種技巧來解決相應(yīng)的問題。歡迎有需要的前來下載!
軟件框架設(shè)計(jì)的藝術(shù)內(nèi)容簡介
《軟件框架設(shè)計(jì)的藝術(shù)》幫助你解決api 設(shè)計(jì)方面的問題,共分3 個(gè)部分,分別指出學(xué)習(xí)api 設(shè)計(jì)是需要進(jìn)行科學(xué)的訓(xùn)練的、java 語言在設(shè)計(jì)方面的理論及設(shè)計(jì)和維護(hù)api 時(shí)的常見情況,并提供了各種技巧來解決相應(yīng)的問題。
《軟件框架設(shè)計(jì)的藝術(shù)》作者是netbeans 的創(chuàng)始人,也是netbeans 項(xiàng)目最初的架構(gòu)師。相信在api 設(shè)計(jì)中遇到問題時(shí),本書將不可或缺。
《軟件框架設(shè)計(jì)的藝術(shù)》適用于軟件設(shè)計(jì)人員閱讀。
本書提供作譯者介紹
Jaroslav Tulach NetBeans的創(chuàng)始人,也是NetBeans項(xiàng)目最初的架構(gòu)師。有著豐富的項(xiàng)目開發(fā)經(jīng)驗(yàn),一直致力于如何提高開發(fā)人員的設(shè)計(jì)技巧,從而保證了NetBeans項(xiàng)目的成功。
王磊 工學(xué)學(xué)士及碩士。2006年起任職于普元公司,一直擔(dān)任普元公司主任架構(gòu)師。同時(shí)是自由軟件Aquarius ORM Studio的作者。
朱興 軟件工程師。一直從事軟件研發(fā)工作,熟悉Java、Eclipse插件開發(fā)、API設(shè)計(jì)等相關(guān)技術(shù)。
軟件框架設(shè)計(jì)的藝術(shù)目錄
《軟件框架設(shè)計(jì)的藝術(shù)》
第一部分 理論與理由
第1章 軟件開發(fā)的藝術(shù) 4
1.1 理性主義,經(jīng)驗(yàn)主義以及無緒 4
1.2 軟件的演變過程 6
1.3 大型軟件 8
1.4 漂亮,真理和優(yōu)雅 9
1.5 更好的無緒 12
第2章 設(shè)計(jì)api的動(dòng)力之源 14
2.1 分布式開發(fā) 14
2.2 模塊化應(yīng)用程序 16
2.3 交流互通才是一切 20
2.4 經(jīng)驗(yàn)主義編程方式 22
2.5 開發(fā)第一個(gè)版本通常比較容易 24
第3章 評(píng)價(jià)api好壞的標(biāo)準(zhǔn) 26
3.1 方法和字段簽名 26
3.2 文件及其內(nèi)容 27
3.3 環(huán)境變量和命令行選項(xiàng) 29
3.4 文本信息也是api 30
3.5 協(xié)議 32
.3.6 行為 35
3.7 國際化支持和信息國際化 35
3.8 api的廣泛定義 37
3.9 如何檢查api的質(zhì)量 37
3.9.1 可理解性 37
3.9.2 一致性 38
3.9.3 可見性 39
3.9.4 簡單的任務(wù)應(yīng)該有簡單的方案 40
3.9.5 保護(hù)投資 40
第4章 不斷變化的目標(biāo) 42
4.1 第一個(gè)版本遠(yuǎn)非完美 42
4.2 向后兼容 43
4.2.1 源代碼兼容 43
4.2.2 二進(jìn)制兼容 44
4.2.3 功能兼容——阿米巴變形蟲效應(yīng) 50
4.3 面向用例的重要性 52
4.4 api設(shè)計(jì)評(píng)審 55
4.5 一個(gè)api的生命周期 56
4.6 逐步改善 60
第二部分 設(shè)計(jì)實(shí)戰(zhàn)
第5章 只公開你要公開的內(nèi)容 67
5.1 方法優(yōu)于字段 68
5.2 工廠方法優(yōu)于構(gòu)造函數(shù) 70
5.3 讓所有內(nèi)容都不可更改 71
5.4 避免濫用setter方法 72
5.5 盡可能通過友元的方式來公開功能 73
5.6 賦予對(duì)象創(chuàng)建者更多權(quán)利 77
5.7 避免暴露深層次繼承 82
第6章 面向接口而非實(shí)現(xiàn)進(jìn)行編程 85
6.1 移除方法或者字段 87
6.2 移除或者添加一個(gè)類或者接口 88
6.3 向現(xiàn)有的繼承體系中添加一個(gè)接口或者類 88
6.4 添加方法或者字段 88
6.5 java中接口和類的區(qū)別 90
6.6 弱點(diǎn)背后的優(yōu)點(diǎn) 91
6.7 添加方法的另一種方案 92
6.8 抽象類有沒有用呢 94
6.9 要為增加參數(shù)做好準(zhǔn)備 95
6.10 接口vs.類 97
第7章 模塊化架構(gòu) 98
7.1 模塊化設(shè)計(jì)的類型 100
7.2 組件定位和交互 103
7.3 編寫擴(kuò)展點(diǎn) 116
7.4 循環(huán)依賴的必要性 117
7.5 滿城盡是lookup 121
7.6 lookup的濫用 126
第8章 設(shè)計(jì)api時(shí)要區(qū)分其目標(biāo)用戶群 129
8.1 c和java語言中如何定義api和spi 129
8.2 api演進(jìn)不同于spi演進(jìn) 131
8.3 java.io.writer這個(gè)類從jdk 1.4到j(luò)dk 5的演進(jìn) 131
8.4 合理分解api 143
第9章 牢記可測(cè)試性 147
9.1 api設(shè)計(jì)和測(cè)試 148
9.2 規(guī)范的光環(huán)正在褪去 151
9.3 好工具讓api設(shè)計(jì)更簡單 153
9.4 兼容性測(cè)試套件 155
第10章 與其他api協(xié)作 158
10.1 謹(jǐn)慎使用第三方api 158
10.2 只暴露抽象內(nèi)容 162
10.3 強(qiáng)化api的一致性 164
10.4 代理和組合 168
10.5 避免api的誤用 176
10.6 不要濫用javabeans那種監(jiān)聽器機(jī)制 180
第11章 api具體運(yùn)行時(shí)的一些內(nèi)容 184
11.1 不要冒險(xiǎn) 186
11.2 可靠性與無緒 189
11.3 同步和死鎖 191
11.3.1 描述線程模型 192
11.3.2 java monitors中的陷阱 193
11.3.3 觸發(fā)死鎖的條件 196
11.3.4 測(cè)試死鎖 201
11.3.5 對(duì)條件競(jìng)爭進(jìn)行測(cè)試 204
11.3.6 分析隨機(jī)故障 206
11.3.7 日志的高級(jí)用途 208
11.3.8 使用日志記錄程序控制流程 210
11.4 循環(huán)調(diào)用的問題 215
11.5 內(nèi)存管理 218
第12章 聲明式編程 223
12.1 讓對(duì)象不可變 225
12.2 不可變的行為 229
12.3 文檔兼容性 230
第三部分 日常生活
第13章 極端的意見有害無益 236
13.1 api必須是漂亮的 237
13.2 api必須是正確的 237
13.3 api應(yīng)該盡量簡單 240
13.4 api必須是高性能的 242
13.5 api必須絕對(duì)兼容 242
13.6 api必須是對(duì)稱的 245
第14章 api設(shè)計(jì)中的矛盾之處 247
14.1 api設(shè)計(jì)中的自相矛盾 248
14.2 背后隱藏的工作 251
14.3 不要害怕發(fā)布一個(gè)穩(wěn)定的api 252
14.4 降低維護(hù)費(fèi)用 255
第15章 改進(jìn)api 258
15.1 讓有問題的類庫重新煥發(fā)活力 259
15.2 自覺地升級(jí)與無意識(shí)地被迫升級(jí) 265
15.3 可選的行為 268
15.4 相似api的橋接和共存 274
第16章 團(tuán)隊(duì)協(xié)作 286
16.1 在提交代碼時(shí)進(jìn)行代碼評(píng)審 286
16.2 說服開發(fā)人員為他們的api提供文檔 290
16.3 盡職盡責(zé)的監(jiān)控者 292
16.4 接受api的補(bǔ)丁 297
第17章 利用競(jìng)賽游戲來提升api設(shè)計(jì)技巧 300
17.1 概述 300
17.2 第一天 301
17.2.1 非public類帶來的問題 304
17.2.2 不可變性帶來的問題 304
17.2.3 遺漏實(shí)現(xiàn)的問題 308
17.2.4 返回結(jié)果可能不正確的問題 309
17.2.5 第一天的解決方案 310
17.3 第二天 313
17.3.1 我想修正犯下的錯(cuò)誤 316
17.3.2 第二天的解決方案 317
17.4 第三天:評(píng)判日 320
17.5 也來玩下這個(gè)游戲吧 327
第18章 可擴(kuò)展visitor模式的案例 328
18.1 抽象類 331
18.2 為改進(jìn)做好準(zhǔn)備 333
18.3 默認(rèn)的遍歷 334
18.4 清楚地定義每個(gè)版本 337
18.5 單向改進(jìn) 339
18.6 使用接口時(shí)的數(shù)據(jù)結(jié)構(gòu) 340
18.7 針對(duì)用戶和開發(fā)商的visitor模式 341
18.8 三重調(diào)度 343
18.9 visitor模式的圓滿結(jié)局 345
18.10 語法小技巧 346
第19章 消亡的過程 348
19.1 明確版本的重要性 349
19.2 模塊依賴的重要性 349
19.3 被移除的部分需要永久保留嗎 352
19.4 分解龐大的api 352
第20章 未來 356
20.1 原則性內(nèi)容 357
20.2 無緒長存 358
20.3 api設(shè)計(jì)方法論 360
20.4 編程語言的演變 361
20.5 教育的作用 363
20.6 共享 365
參考書目 366
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版