- Java多線程編程實(shí)戰(zhàn)指南:設(shè)計(jì)模式篇(第2版)
- 黃文海
- 1157字
- 2021-10-15 19:24:54
2.3 設(shè)計(jì)模式的描述
設(shè)計(jì)模式通常都會(huì)用形式化的格式來描述。但不管采用哪種格式,其表達(dá)的內(nèi)容都脫離不了設(shè)計(jì)模式的幾個(gè)要素。
描述設(shè)計(jì)模式的一種常見格式包含以下幾個(gè)方面。
? 別名(Alias) 該部分指出了相應(yīng)設(shè)計(jì)模式的其他名字。
? 背景(Context) 該部分列出了相應(yīng)設(shè)計(jì)模式所要解決的問題所產(chǎn)生的背景,或者應(yīng)用相應(yīng)設(shè)計(jì)模式的情景。
? 問題(Problem) 該部分指出了相應(yīng)設(shè)計(jì)模式所要解決的問題。
? 解決方案(Solution) 該部分描述了設(shè)計(jì)模式對(duì)相應(yīng)問題所提出的解決方案。
? 結(jié)果(Consequences) 該部分對(duì)設(shè)計(jì)模式進(jìn)行了評(píng)價(jià),主要描述了使用相應(yīng)設(shè)計(jì)模式會(huì)帶來哪些好處以及可能存在哪些弊端。
? 相關(guān)模式(Related Pattern) 該部分描述了相應(yīng)設(shè)計(jì)模式與其他設(shè)計(jì)模式之間的關(guān)系。
本書第15章就采用了上述這種格式對(duì)本書所介紹的12個(gè)多線程方面的設(shè)計(jì)模式進(jìn)行描述的。不過,這一章采用這種格式進(jìn)行描述的目的是方便讀者在需要時(shí)進(jìn)行快速參考。而為了方便講解各個(gè)設(shè)計(jì)模式,本書在其他章中使用了以下格式進(jìn)行描述。
? 簡(jiǎn)介 該部分主要對(duì)相應(yīng)設(shè)計(jì)模式的核心思想和本質(zhì)進(jìn)行描述,以便讀者對(duì)其形成基本的認(rèn)識(shí)。
? 架構(gòu) 該部分會(huì)描述相應(yīng)的設(shè)計(jì)模式涉及哪些類(參與者)以及這些類之間的關(guān)系,并在此基礎(chǔ)上描述這些類之間是如何協(xié)作從而解決相應(yīng)的設(shè)計(jì)模式所要解決的問題的。也就是說,該部分從靜態(tài)(類及類之間的關(guān)系)和動(dòng)態(tài)(類之間的協(xié)作)兩個(gè)角度描述了解決方案,因此被稱為架構(gòu)。
? 實(shí)戰(zhàn)案例解析 該部分以筆者實(shí)際工作經(jīng)歷中應(yīng)用相應(yīng)的設(shè)計(jì)模式所解決過的問題為例,講解了應(yīng)用相應(yīng)設(shè)計(jì)模式的典型場(chǎng)景(背景)以及相應(yīng)設(shè)計(jì)模式是如何解決相關(guān)問題的。
? 評(píng)價(jià)與實(shí)現(xiàn)考量 該部分會(huì)對(duì)相應(yīng)的設(shè)計(jì)模式進(jìn)行評(píng)價(jià),分析其優(yōu)缺點(diǎn),并對(duì)其實(shí)現(xiàn)和運(yùn)用過程中需要注意的一些事項(xiàng)、重要問題及解決方法進(jìn)行描述。例如,第10章介紹的Thread Specific Storage(線程特有存儲(chǔ))模式可以在不使用鎖的情況下保證線程安全。但是其在實(shí)際使用過程中卻可能導(dǎo)致內(nèi)存泄漏這樣嚴(yán)重的問題。
? 可復(fù)用實(shí)現(xiàn)代碼 該部分會(huì)給出相應(yīng)設(shè)計(jì)模式的可復(fù)用實(shí)現(xiàn)代碼。編寫設(shè)計(jì)模式的可復(fù)用實(shí)現(xiàn)代碼可以幫助讀者進(jìn)一步理解相應(yīng)的設(shè)計(jì)模式及其實(shí)現(xiàn)時(shí)需要注意的問題。另外,也便于讀者在實(shí)際工作中運(yùn)用相應(yīng)的設(shè)計(jì)模式。
? Java標(biāo)準(zhǔn)庫(kù)實(shí)例 該部分描述了Java標(biāo)準(zhǔn)庫(kù)對(duì)相應(yīng)設(shè)計(jì)模式的使用情況。Java標(biāo)準(zhǔn)庫(kù)已經(jīng)實(shí)現(xiàn)了本書介紹的部分設(shè)計(jì)模式,如Promise(承諾)模式(第6章)和Thread Specific Storage(線程特有存儲(chǔ))模式(第10章)。該部分重點(diǎn)講解的是Java標(biāo)準(zhǔn)庫(kù)對(duì)相應(yīng)設(shè)計(jì)模式的使用情況而不是實(shí)現(xiàn)情況。
? 相關(guān)模式 該部分描述了相應(yīng)的設(shè)計(jì)模式與其他設(shè)計(jì)模式之間的關(guān)系。
[1]引自維基百科:“A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design”。
[2]概括為SOLID(Single Responsibility Principle單一職責(zé)原則、Open-Closed Principle開閉原則、Liskov Substitution Principle里氏替換原則、Interface Segregation Principle接口隔離原則以及Dependency Inversion Principle依賴倒置原則)原則。
[3]即一塊芯片上集成多個(gè)處理器。
[4]參見The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software一文。(參見鏈接[2])
- Python機(jī)器學(xué)習(xí):數(shù)據(jù)分析與評(píng)分卡建模(微課版)
- jQuery從入門到精通 (軟件開發(fā)視頻大講堂)
- Java程序設(shè)計(jì)與實(shí)踐教程(第2版)
- 匯編語(yǔ)言程序設(shè)計(jì)(第3版)
- Symfony2 Essentials
- HTML5從入門到精通 (第2版)
- Python機(jī)器學(xué)習(xí):預(yù)測(cè)分析核心算法
- Web性能實(shí)戰(zhàn)
- Visual Studio Code 權(quán)威指南
- Python Machine Learning Blueprints:Intuitive data projects you can relate to
- OpenCV Android開發(fā)實(shí)戰(zhàn)
- Learning Shiny
- 自己動(dòng)手構(gòu)建編程語(yǔ)言:如何設(shè)計(jì)編譯器、解釋器和DSL
- Mastering Data Analysis with R
- Python 3.6從入門到精通(視頻教學(xué)版)