設(shè)計(jì)模式

出版時(shí)間:2007-3  出版社:機(jī)械工業(yè)出版社  作者:伽瑪  頁數(shù):374  譯者:李英軍  
Tag標(biāo)簽:無  

內(nèi)容概要

  《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)是軟件設(shè)計(jì)領(lǐng)域中的經(jīng)典著作,對軟件技術(shù)的發(fā)展起了重要作用?!对O(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)結(jié)合設(shè)計(jì)實(shí)例從面向?qū)ο蟮脑O(shè)計(jì)中精選出23個(gè)設(shè)計(jì)模式,總結(jié)了面向?qū)ο笤O(shè)計(jì)中最有價(jià)值的經(jīng)驗(yàn),并且用簡潔可復(fù)用的形式表達(dá)出來?!对O(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)分類描述了一組設(shè)計(jì)良好、表達(dá)清楚的軟件設(shè)計(jì)模式,這些模式在實(shí)用環(huán)境下特別有用?!对O(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)適合大學(xué)計(jì)算機(jī)專業(yè)的學(xué)生、研究生及相關(guān)人員參考。

書籍目錄

PrefaceForewordGuide to Readers1 Introduction1.1 What Is a Design Pattern?1.2 Design Patterns in Smalltalk MVC1.3 Describing Design Patterns1.4 The Catalog of Design Patterns1.5 Organizing the Catalog1.6 How Design Patterns Solve Design Problems1.7 How to Select a Design Pattern1.8 How to Use a Design Pattern2 A Case Study: Designing a Document Editor2.1 Design Problems2.2 Document Structure2.3 Formatting2.4 Embellishing the User Interface2.5 Supporting Multiple Look-and-Feel Standards2.6 Supporting Multiple Window Systems2.7 User Operations2.8 Spelling Checking and Hyphenation2.9 SummaryDesign Pattern Catalog3 Creational PatternsAbstract FactoryBuilderFactory MethodPrototypeSingletonDiscussion of Creational Patterns4 Structural PatternsAdapterBridgeCompositeDecoratorFacadeFlyweightProxyDiscussion of Structural Patterns5 Behavioral PatternsChain of ResponsibilityCommandInterpreterItcratorMediatorMementoObserverStateStrategyTemplate MethodVisitorDiscussion of Behavioral Patterns6 Conclusion6.1 What to Expect from Design Patterns6.2 A Brief History6.3 The Pattern Community6.4 An Invitation6.5 A Parting ThoughtA GlossaryB Guide to NotationB.1 Class DiagramB.2 Object DiagramB.3 Interaction DiagramC Foundation ClassesC.1 ListC.2 IteratorC.3 ListIteratorC.4 PointC.5 RectBibliographyIndex

編輯推薦

  《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)是引導(dǎo)讀者走入軟件設(shè)計(jì)迷宮的指路明燈,凝聚了軟件開發(fā)界幾十年的設(shè)計(jì)經(jīng)驗(yàn)。四位頂尖的面向?qū)ο箢I(lǐng)域?qū)<冶M心挑選了最具價(jià)值的23種設(shè)計(jì)實(shí)踐,加以分類整理和命名,并用簡潔而易于重用的形式表達(dá)出來。這23個(gè)模式逐漸成為開發(fā)界進(jìn)行技術(shù)交流所必備的基本知識和語匯?!  对O(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(雙語版)已經(jīng)成為廣大技術(shù)人員的圣經(jīng)和經(jīng)典,一直名列Amazon和各大書店銷售榜前列。十年來不斷重印,銷售逾七萬冊。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    設(shè)計(jì)模式 PDF格式下載


用戶評論 (總計(jì)9條)

 
 

  •     非常不錯(cuò)的一本書...........................
      非常不錯(cuò)的一本書...................................非常不錯(cuò)的一本書...........非常不錯(cuò)的一本書........
  •     花了一個(gè)月時(shí)間,把英文版大致過了一遍。由于有一些失敗的編程經(jīng)歷,大致還是能夠理解作者的用意的。個(gè)人喜歡先看motivation,structure和sample code,再回過頭看討論。
      
      有點(diǎn)遺憾的是書中對各個(gè)模式的橫向?qū)Ρ茸龅貌粔?。有些地方容易混淆,有些場合的名詞太過空洞?;蛟S只有在反復(fù)閱讀和實(shí)踐中去領(lǐng)悟吧。
      
      
  •     可復(fù)用的軟件,好!
      面向?qū)ο蟮能浖?,好?br />   我的代碼應(yīng)該盡可能的用設(shè)計(jì)模式,嗯,等等。
      
      之所以出此感慨是因?yàn)樽罱淮蔚腸ode review我用了state pattern,結(jié)果reviewer說不直觀。我郁悶了一會兒,試圖教育他什么是state pattern,為什么好。不過最后還是改回了if...else來實(shí)現(xiàn)。
      
      又看了公司(Google)的一個(gè)Web Application Framework,文檔里說這是用了Command Pattern。我一看,好,用了模式的肯定是好東東。
      
      現(xiàn)在我的感覺是如果是寫Library、Framework什么的,應(yīng)該用設(shè)計(jì)模式。寫Application,理解設(shè)計(jì)模式可以幫助學(xué)習(xí)Framework。不過Application本身的代碼未必要用設(shè)計(jì)模式,因?yàn)樵O(shè)計(jì)模式是適合需要重用的代碼,很多Application的代碼并不好復(fù)用。
  •     非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)非常不錯(cuò)
  •      兩年前的面向?qū)ο笳n程,要求我們讀這本書,當(dāng)時(shí)沒太看懂,只是簡單的應(yīng)付了一下作業(yè),將自己要講的3個(gè)模式囫圇吞棗地看了.當(dāng)時(shí)講composite模式的時(shí)候,還記得被黃震春老師批評,我正好理解反了。。
      
       今年暑假我再次看此書,多了兩年的編程經(jīng)歷,一年的實(shí)習(xí)經(jīng)歷,忽然覺得簡單了很多。在郵箱找到了兩年前我當(dāng)時(shí)在臺上講composite模式的ppt,看了幾頁就立馬發(fā)現(xiàn),我確實(shí)搞反了。
      
       這本20年前的神作,雖然很多人說晦澀難懂,我現(xiàn)在覺得其實(shí)還好,沒想像中的那么難理解,也沒想像中的那么枯燥無味,認(rèn)真看還是能看的。
      
       書中的各種模式可能還需要自己在接下來的編程中逐漸去融會貫通。但是這幾天讀完了全書,一本兩年前看不懂,一直令我感到畏懼的書,今天終于被我拿下了,還是難以隱藏心中的喜悅之情,所以短短寫一兩百字紀(jì)念一下~
  •     之前看過若干本設(shè)計(jì)模式的書,大都是矯柔造作的例子,長篇累牘的廢話,不清不楚的論述。往往翻看數(shù)頁仍然不知所云,云里霧里。
      
      相較而言,本書對于模式的論述可謂拳拳到肉,酣暢淋漓。所采用的例子也是從現(xiàn)實(shí)項(xiàng)目中抽取出來的,更加貼近設(shè)計(jì)模式的現(xiàn)實(shí)使用場景??煸眨】煸?!
      
      本以為知識密度如此大的書勢必枯燥的緊,但沒想到翻看數(shù)百頁卻欲罷不能。
  •     23個(gè)設(shè)計(jì)最基礎(chǔ)的設(shè)計(jì)模式,每每讀起如醍醐灌頂!不愧為經(jīng)典之作!
      
      
      創(chuàng)建型
      1. Abstract Factory:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無須指定它們具體的類
      2. Builder:將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
      3. Factory Method:定義一個(gè)用于創(chuàng)建對象的接口,讓子類決定實(shí)例化那一個(gè)類。Factory Method使得一個(gè)類的實(shí)例化延遲到其子類
      4. Prototype:用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象
      5. Singleton:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)
      
      結(jié)構(gòu)型
      1. Adapter:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些類可以一起工作
      2. Bridge:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
      3. Composite:將對象組合成樹形結(jié)構(gòu)以表示"部分-整體"的層次結(jié)構(gòu)。Composite使得用戶對單個(gè)對象和組合對象的使用具有一致性
      4. Decorator:動態(tài)地給一個(gè)對象添加一些額外的職責(zé)。就增加功能來說,Decorator模式比生成子類給為靈活
      5. Facade:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得子系統(tǒng)更加容易使用
      6. Flyweight:運(yùn)行共享技術(shù)有效地支持大量細(xì)粒度的對象
      7. Proxy:為其它對象提供一種代理以控制對這個(gè)對象的訪問
      
      行為型
      1. Chain of Responsibility:使多個(gè)對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個(gè)對象處理它為止
      2. Command:將一個(gè)請求封裝為一個(gè)對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤銷的操作
      3. Interpreter:給定一個(gè)語言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來解釋語言中的句子
      4. Iterator:提供一種方法順序訪問一個(gè)聚合對象中的各個(gè)元素,而又不暴露該對象的內(nèi)部表示
      5. Mediator:用一個(gè)中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式的相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互
      6. Memento:在不破壞封裝的前提下,捕獲一個(gè)對象的內(nèi)部狀態(tài),并在對象之外保存這個(gè)狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)
      7. Observer:定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個(gè)對象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對象都得到通知并被自動更新
      8. State:允許一個(gè)對象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對象看起來似乎修改了它的類
      9. Strategy:定義一系列的算法,把他們一個(gè)個(gè)封裝起來,并且使它們可互相替換。本模式使得算法可獨(dú)立與使用它的客戶而變化
      10. Template Method:定義一個(gè)操作中的算法骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟
      11. Visitor:表示一個(gè)作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作
      
  •     如書中所說“設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖透永щy”,很多人在設(shè)計(jì)面向?qū)ο筌浖r(shí)往往無從下手,勉強(qiáng)設(shè)計(jì)的結(jié)果也很難擴(kuò)展和維護(hù),這本書告訴你,大師是怎么設(shè)計(jì)的。
      
      本書以一個(gè)文檔編輯器的示例開始引入常見的設(shè)計(jì)模式,并做了簡單的說明。后面各章按類別:創(chuàng)建型、結(jié)構(gòu)型、行為,詳細(xì)分析了各個(gè)模式,并配以樣例代碼。本書有一點(diǎn)比較好的是,他把幾個(gè)有關(guān)的模式放在一起,對比他們的特點(diǎn)并說明他們之間的關(guān)系,這樣一來,即使你對某個(gè)模式只有一點(diǎn)模糊的概念,完全可以把這本書當(dāng)字典,查到你想使用的模式和相關(guān)的模式。
      
      當(dāng)然有一點(diǎn)覺得不大友好,為啥樣例代碼是 C++ 和 smalltalk?C++ 是一個(gè)主流的編程語言,用這個(gè)說的過去,雖然我對 C++ 一點(diǎn)都不熟悉,smalltalk 雖然有點(diǎn)名氣,但是畢竟用的不廣泛,估計(jì)沒多少人能看懂。我還是建議使用 Java,一門語言就足夠了。
  •   nb!!!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7