設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)(典藏版)
定 價:79 元
叢書名:計算機科學叢書
- 作者:[美] 埃里克·伽瑪(Erich Gamma)等
- 出版時間:2019/6/1
- ISBN:9787111618331
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書結(jié)合設(shè)計實例從面向?qū)ο蟮脑O(shè)計中精選出23個設(shè)計模式, 總結(jié)了面向?qū)ο笤O(shè)計中*有價值的經(jīng)驗, 并且用簡潔可復(fù)用的形式表達出來。本書分類描述了一組設(shè)計良好、 表達清楚的軟件設(shè)計模式, 這些模式在實用環(huán)境下特別有用。 本書適合大學計算機專業(yè)的學生、研究生及相關(guān)人員參考。
本書并不是一本介紹面向?qū)ο蠹夹g(shù)或設(shè)計的書,目前已有不少好書介紹面向?qū)ο蠹夹g(shù)或設(shè)計。本書假設(shè)你至少已經(jīng)比較熟悉一種面向?qū)ο缶幊陶Z言,并且有一定的面向?qū)ο笤O(shè)計經(jīng)驗。當我們提及“類型”和“多態(tài)”,或“接口”繼承與“實現(xiàn)”繼承的關(guān)系時,你應(yīng)該對這些概念了然于胸,而不是迫不及待地翻閱手頭的字典。
另外,這也不是一篇高級專題技術(shù)論文,而是一本關(guān)于設(shè)計模式的書,它描述了在面向?qū)ο筌浖O(shè)計過程中針對特定問題的簡潔而優(yōu)雅的解決方案。設(shè)計模式捕獲了隨時間進化與發(fā)展的問題的求解方法,因此它們并不是人們從一開始就采用的設(shè)計方案。它們反映了不為人知的重新設(shè)計和重新編碼的成果,而這些都來自軟件開發(fā)者為了設(shè)計出靈活、可復(fù)用的軟件而長時間進行的艱苦努力。設(shè)計模式捕獲了這些解決方案,并用簡潔易用的方式表達出來。
設(shè)計模式并不要求使用獨特的語言特性,也不采用那些足以使你的朋友或老板大吃一驚的神奇的編程技巧。所有的模式均可以用標準的面向?qū)ο笳Z言實現(xiàn),這也許有時會比特殊的解法多費一些功夫,但是為了增加軟件的靈活性和可復(fù)用性,多做些工作是值得的。
一旦理解了設(shè)計模式并且有了一種“Aha!”(而不是“Huh?”)的應(yīng)用經(jīng)驗和體驗后,你將用一種非同尋常的方式思考面向?qū)ο笤O(shè)計。你將擁有一種深刻的洞察力,以幫助你設(shè)計出更加靈活的、模塊化的、可復(fù)用的和易理解的軟件—這也是你著迷于面向?qū)ο蠹夹g(shù)的原因,不是嗎?
當然還有一些提示和鼓勵:第一次閱讀此書時你可能不會完全理解它,但不必著急,我們在起初編寫這本書時也沒有完全理解它們!請記住,這不是一本讀完一遍就可以束之高閣的書。我們希望你在軟件設(shè)計過程中反復(fù)參閱此書,以獲取設(shè)計靈感。
我們并不認為這組設(shè)計模式是完整的和一成不變的,它只是我們目前對設(shè)計的思考的記錄。因此我們歡迎廣大讀者的批評與指正,無論從書中采用的實例、參考,還是我們遺漏的已知應(yīng)用,或應(yīng)該包含的設(shè)計模式等方面。你可以通過Addison-Wesley寫信給我們,或發(fā)送電子郵件到design-patterns@cs.uiuc.edu。你還可以發(fā)送郵件“send design pattern source”到design-patterns-source@cs.uiuc.edu獲取書中的示例代碼部分的源代碼。
另外我們有一個專門的網(wǎng)頁報道最新的消息與更新:
http://st-www.cs.uiuc.edu/users/patterns/DPBook/DPBook.html
E. G. 于加州Mountain View
R. H. 于蒙特利爾
R. J. 于伊利諾伊Urbana
J. V. 于紐約 Hawthorne
1994年8月
埃里克·伽瑪(Erich Gamma) 在瑞士蘇黎世大學獲得計算機科學博士學位。他與Kent Beck合作開發(fā)了單元測試框架JUnit,并領(lǐng)導(dǎo)了Eclipse Java Development Tools項目。他還曾是IBM Rational Jazz項目的主要成員。2011年,Gamma以杰出工程師(Distinguished Engineer)的身份加入微軟Visual Studio團隊,領(lǐng)導(dǎo)微軟位于瑞士蘇黎世的實驗室。
理查德·赫爾姆(Richard Helm) 在澳大利亞墨爾本大學獲得計算機科學博士學位,曾在IBM T. J. Watson擔任研究員,并在澳大利亞開創(chuàng)了IBM面向?qū)ο蠹夹g(shù)研究分部。
拉爾夫·約翰遜(Ralph Johnson) 在美國康奈爾大學獲得計算機科學博士學位,伊利諾伊大學教授,在模式、重構(gòu)等領(lǐng)域均有很高造詣。
約翰·威利斯迪斯(John Vlissides) 在美國斯坦福大學獲得計算機科學博士學位,是IBM T. J. Watson研究中心的研究員。
出版者的話
贊譽
序言
前言
讀者指南
第1章引言┊1
1.1 什么是設(shè)計模式┊3
1.2 Smalltalk MVC中的設(shè)計模式┊4
1.3 描述設(shè)計模式┊6
1.4 設(shè)計模式的編目┊7
1.5 組織編目┊8
1.6 設(shè)計模式怎樣解決設(shè)計問題┊10
1.6.1 尋找合適的對象┊10
1.6.2 決定對象的粒度┊11
1.6.3 指定對象接口┊11
1.6.4 描述對象的實現(xiàn)┊12
1.6.5 運用復(fù)用機制┊15
1.6.6 關(guān)聯(lián)運行時和編譯時的結(jié)構(gòu)┊18
1.6.7 設(shè)計應(yīng)支持變化┊19
1.7 怎樣選擇設(shè)計模式┊22
1.8 怎樣使用設(shè)計模式┊24
第2章實例研究:設(shè)計一個文檔編輯器┊25
2.1 設(shè)計問題┊27
2.2 文檔結(jié)構(gòu)┊27
2.2.1 遞歸組合┊28
2.2.2 圖元┊29
2.2.3 組合模式┊31
2.3 格式化┊31
2.3.1 封裝格式化算法┊31
2.3.2 Compositor和Composition┊32
2.3.3 策略模式┊33
2.4 修飾用戶界面┊34
2.4.1 透明圍欄┊34
2.4.2 Monoglyph┊35
2.4.3 Decorator模式┊36
2.5 支持多種視感標準┊37
2.5.1 對象創(chuàng)建的抽象┊37
2.5.2 工廠類和產(chǎn)品類┊38
2.5.3 Abstract Factory 模式┊40
2.6 支持多種窗口系統(tǒng)┊40
2.6.1 是否可以使用Abstract Factory模式┊40
2.6.2 封裝實現(xiàn)依賴關(guān)系┊41
2.6.3 Window和WindowImp┊43
2.6.4 Bridge模式┊46
2.7 用戶操作┊46
2.7.1 封裝一個請求┊47
2.7.2 Command類及其子類┊47
2.7.3 撤銷和重做┊48
2.7.4 命令歷史記錄┊49
2.7.5 Command模式┊50
2.8 拼寫檢查和斷字處理┊50
2.8.1 訪問分散的信息┊51
2.8.2 封裝訪問和遍歷┊51
2.8.3 Iterator類及其子類┊52
2.8.4 Iterator模式┊55
2.8.5 遍歷和遍歷過程中的動作┊55
2.8.6 封裝分析┊56
2.8.7 Visitor類及其子類┊59
2.8.8 Visitor模式┊60
2.9 小結(jié)┊60
第3章創(chuàng)建型模式┊62
3.1 Abstract Factory(抽象工廠)—對象創(chuàng)建型模式┊66
3.2 Builder(生成器)—對象創(chuàng)建型模式┊74
3.3 Factory Method(工廠方法)—對象創(chuàng)建型模式┊81
3.4 Prototype(原型)—對象創(chuàng)建型模式┊89
3.5 Singleton(單件)—對象創(chuàng)建型模式┊96
3.6 創(chuàng)建型模式的討論┊102
第4章結(jié)構(gòu)型模式┊104
4.1 Adapter(適配器)—類對象結(jié)構(gòu)型模式┊106
4.2 Bridge(橋接)—對象結(jié)構(gòu)型模式┊115
4.3 Composite(組合)—對象結(jié)構(gòu)型模式┊123
4.4 Decorator(裝飾)—對象結(jié)構(gòu)型模式┊132
4.5 Facade(外觀)—對象結(jié)構(gòu)型模式┊┊139
4.6 Flyweight(享元)—對象結(jié)構(gòu)型模式┊146
4.7 Proxy(代理)—對象結(jié)構(gòu)型模式┊155
4.8 結(jié)構(gòu)型模式的討論 ┊164
4.8.1 Adapter與Bridge┊164
4.8.2 Composite、Decorator與Proxy┊164
第5章行為型模式┊166
5.1 Chain of Responsibility(職責鏈)—對象行為型模式┊167
5.2 Command(命令)—對象行為型模式┊175
5.3 Interpreter(解釋器)—類行為型模式┊183
5.4 Iterator(迭代器)—對象行為型模式┊193
5.5 Mediator(中介者)—對象行為型模式┊205
5.6 Memento(備忘錄)—對象行為型模式┊212
5.7 Observer(觀察者)—對象行為型模式┊219
5.8 State(狀態(tài))—對象行為型模式┊227
5.9 Strategy(策略)—對象行為型模式┊234
5.10 Template Method(模板方法)— 類行為型模式┊242
5.11 Visitor(訪問者)—對象行為型 模式┊246
5.12 行為型模式的討論┊256
5.12.1 封裝變化┊256
5.12.2 對象作為參數(shù)┊257
5.12.3 通信應(yīng)該被封裝還是被分布┊257
5.12.4 對發(fā)送者和接收者解耦┊258
5.12.5 總結(jié)┊260
第6章結(jié)論┊261
6.1 設(shè)計模式將帶來什么┊262
6.1.1 一套通用的設(shè)計詞匯┊262
6.1.2 書寫文檔和學習的輔助手段┊263
6.1.3 現(xiàn)有方法的一種補充┊263
6.1.4 重構(gòu)的目標┊264
6.2 本書簡史┊265
6.3 模式界┊266
6.3.1 Alexander的模式語言┊266
6.3.2 軟件中的模式┊267
6.4 邀請參與┊267
6.5 臨別感想┊268
附錄A詞匯表┊269
附錄B圖示符號指南┊273
附錄 C基本類┊277
參考文獻┊284