深入淺出設(shè)計(jì)模式

出版時(shí)間:2005-11-1  出版社:東南大學(xué)出版社  作者:弗里曼  頁(yè)數(shù):638  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

  你不想重新發(fā)明車輪(或者更差的是,沒(méi)有充氣車胎的輪子),所以你從設(shè)計(jì)模式中尋求幫助——設(shè)計(jì)模式是過(guò)去人們面對(duì)同樣的軟件設(shè)計(jì)問(wèn)題所得到的經(jīng)驗(yàn)。 有了設(shè)計(jì)模式,就可以利用其他人的實(shí)踐經(jīng)驗(yàn)的精華,因此省下的時(shí)間可以用在其他的事情上,如:更有挑戰(zhàn)性的事情、更復(fù)雜的事情以及更有趣的事情。你想要學(xué)習(xí):  ·重要的模式 ;  ·何時(shí)使用某個(gè)模式,為何使用該模式;  ·如何在你自己的設(shè)計(jì)中馬上采用這些模式;  ·何時(shí)不該使用該模式(如何避免濫用模式);  ·某個(gè)模式是依據(jù)哪些面向?qū)ο笤O(shè)計(jì)原理而設(shè)計(jì)出來(lái)的?! 「匾氖?,你想在學(xué)習(xí)設(shè)計(jì)模式的過(guò)程中,不感覺(jué)到昏昏欲睡。如果你曾經(jīng)讀過(guò)任何一本深入淺出(Head First)系列書(shū)籍,你就會(huì)知道能夠從本書(shū)中得到的是:透過(guò)豐富的視覺(jué)效果讓你的大腦充分地運(yùn)作。本書(shū)的編寫(xiě)運(yùn)用許多最新的研究,包括神經(jīng)生物學(xué)、認(rèn)知科學(xué)以及學(xué)習(xí)理論,這使得這本書(shū)能夠?qū)⑦@些設(shè)計(jì)模式深深地烙印在你的腦海中,不容易被遺忘。你將會(huì)更擅長(zhǎng)于解決軟件設(shè)計(jì)中的問(wèn)題,并能夠和你的團(tuán)隊(duì)成員用模式的語(yǔ)言來(lái)更好地溝通。

作者簡(jiǎn)介

作者:(美)弗里曼Eric Freeman以及Elisabeth Freeman是作家、教育家以及技術(shù)發(fā)明者。他們?cè)诘纤鼓峁绢I(lǐng)導(dǎo)了四年的數(shù)字媒體以及因特網(wǎng)的開(kāi)發(fā),后來(lái)他們將這些經(jīng)驗(yàn)應(yīng)用在他們自己的媒體中,包括這本書(shū)中。Eric具有耶魯大學(xué)的計(jì)算機(jī)科學(xué)博士學(xué)位,Elisbeth具有耶魯大學(xué)的計(jì)算機(jī)科學(xué)碩士學(xué)位。    Kathy Sierra(javaranch.com的創(chuàng)始者)以及Bert Bates是暢銷的“深入淺出”(Head First)系列書(shū)籍的策劃者,也是Sun公司Java開(kāi)發(fā)員認(rèn)證考試的開(kāi)發(fā)者。

書(shū)籍目錄

Intro1  Welcome to Design Patterns:an introduction2  Keepingyour Objects in the know:/he Observer Pattern3  Decorating Objects:the Decorator Pattern4  BakingwithOO goodness:the FactoryPattern5  One of aKindObjects:the SingletonPattern6  Encapsulating Invocation:the Command Pattern7  BeingAdaptive:theAdapterandFacadePatterns8  Encapsulating Algorithms:the Template Method Patterm9  Well—managed Collections:the Iterator and Composite Patterns10  The State ofThings:the State Pattern11  Controlling Objcct Access:the Proxy Pattern12  Patterns of Patterns:Compound Patlerns13  Patterns in the Real World:Better Living with Patterns14  Appendix:Leftover Patterns

媒體關(guān)注與評(píng)論

書(shū)評(píng)本書(shū)榮獲2005年第十五屆Jolt通用類圖書(shū)震撼大獎(jiǎng)。  “我昨天收到了這本書(shū),然后就開(kāi)始閱讀……我簡(jiǎn)直欲罷不能??釘懒?!內(nèi)容相當(dāng)有趣,涵蓋層面很廣,而且切中要點(diǎn)。這本書(shū)讓我感到印象深刻?!薄                狤rich Gamma,IBM頂級(jí)工程師、《Design Patterns》作者之一    “我感到讀這本書(shū)的效果等同于讀一千磅重的同類書(shū)的效果?!?                             ——Ward Cunningham,Wiki發(fā)明者、Hillside Group創(chuàng)始人    “本書(shū)趨近完美,因?yàn)樗谔峁I(yè)知識(shí)的同時(shí),仍然具有相當(dāng)高的可讀性。敘述權(quán)威、文筆優(yōu)美?!?                                 ——David Gelernter,耶魯大學(xué)計(jì)算機(jī)科學(xué)系教授    “這是我閱讀過(guò)的最有趣且最聰明的軟件設(shè)計(jì)書(shū)籍之一?!?                                  ——Aaron LaBerge,ESPN.com技術(shù)副主席

編輯推薦

☆本書(shū)榮獲2005年第十五屆Jolt通用類圖書(shū)震撼大獎(jiǎng) ☆"我昨天收到了這本書(shū),然后就開(kāi)始閱讀……我簡(jiǎn)直欲罷不能??釘懒?內(nèi)容相當(dāng)有趣,涵蓋層面很廣,而且切中要點(diǎn)。這本書(shū)讓我感到印象深刻。"    ——Erich Gamma,IBM頂級(jí)工程師、《Design Patterns》作者之一☆"我感到讀這本書(shū)的效果等同于讀一千磅重的同類書(shū)的效果。"——Ward Cunningham,Wiki發(fā)明者、Hillside Group創(chuàng)始人☆"本書(shū)趨近完美,因?yàn)樗谔峁I(yè)知識(shí)的同時(shí),仍然具有相當(dāng)高的可讀性。敘述權(quán)威、文筆優(yōu)美。"——David Gelernter,耶魯大學(xué)計(jì)算機(jī)科學(xué)系教授☆"這是我閱讀過(guò)的最有趣且最聰明的軟件設(shè)計(jì)書(shū)籍之一。" ——Aaron LaBerge,ESPN.com技術(shù)副主席☆I(lǐng)f you want to UNDERSTAND Java, go buy this book.  "Head First Java"... gives new meaning to their marketing phrase "There's an O Reilly for that." I picked this up because several others I respect had described it in terms like "revolutionary' and a described a radically different approach to the textbook. They were (are) right... In typical O'Reilly fashion, they've taken a scientific and well considered approach. The result is funny, irreverent, topical, interactive, and brillliant...Reading this book is like sitting in the speakers lounge at a view conference, learning from and laughing with-peers... If you want to UNDERSTAND Java, go buy this book."   你不想重新發(fā)明車輪(或者更差的是,沒(méi)有充氣車胎的輪子),所以從設(shè)計(jì)模式中尋求幫助,設(shè)計(jì)模式是過(guò)去人們面對(duì)同樣的軟件設(shè)計(jì)問(wèn)題所得到的經(jīng)驗(yàn)。有了設(shè)計(jì)模式,就可以利用其他人的實(shí)踐經(jīng)驗(yàn)的精華,因此省下的時(shí)間可以用在其他的事情上,如:更有挑戰(zhàn)性的事情、更復(fù)雜的事情以及更有趣的事情。你想要學(xué)習(xí):  ·重要的模式  ·何時(shí)使用某個(gè)模式,為何使用該模式  ·如何在你自己的設(shè)計(jì)中馬上采用這些模式  ·何時(shí)不該使用該模式(如何避免濫用模式)  ·某個(gè)模式是依據(jù)哪些面向?qū)ο笤O(shè)計(jì)原理而設(shè)計(jì)出來(lái)的  更重要的是,你想在學(xué)習(xí)設(shè)計(jì)模式的過(guò)程中不感覺(jué)到昏昏欲睡。如果你曾經(jīng)讀過(guò)任何一本"深入淺出"(Head First)系列書(shū)籍,你就會(huì)知道能夠從《深入淺出設(shè)計(jì)模式》(影印版)中得到的是:透過(guò)豐富的視覺(jué)效果讓你的大腦充分地運(yùn)作。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    深入淺出設(shè)計(jì)模式 PDF格式下載


用戶評(píng)論 (總計(jì)53條)

 
 

  •   書(shū)是我讀書(shū)的時(shí)候買的,看了一大半,但沒(méi)看完。 在面試的時(shí)候跟面試官掰了一些,后來(lái)就放那兒了, 工作了一段時(shí)間后,發(fā)現(xiàn)真應(yīng)該詳細(xì)看看。 這本書(shū)以圖為主的講解方式,我很喜歡,比那本薄薄的設(shè)計(jì)模式容易理解,別看它厚,可看的時(shí)候很快,講得很細(xì)致
  •   非常好的一本書(shū),通俗易懂,深入淺出推薦~~~
  •   質(zhì)量好!絕對(duì)正版,很有幫助的,實(shí)用
  •   這本書(shū)只有亞馬遜有賣,head first系列的書(shū)看起來(lái)都很有趣,書(shū)的內(nèi)容很好,插圖很豐富,本來(lái)還想買head first java影印版,但現(xiàn)在已經(jīng)沒(méi)賣了,有點(diǎn)可惜,希望能重印head first java影印版
  •   花了1個(gè)多月的時(shí)間看完,講了13個(gè)常用的模式,其它11個(gè)并不是很常用,所以書(shū)里只是提了一個(gè),如果你有經(jīng)驗(yàn),會(huì)發(fā)現(xiàn)原來(lái)設(shè)計(jì)模式并不深?yuàn)W,學(xué)好模式,對(duì)于看一些開(kāi)源框架的源代碼的理解很有幫助,這本書(shū)需要你最好有6級(jí)的英文水平,否則看起來(lái)還是比較吃力的,生詞會(huì)海量地涌來(lái)。我是邊看邊查詞典,既學(xué)英語(yǔ),又學(xué)技術(shù),對(duì)于計(jì)算機(jī)英語(yǔ)的提高亦有好處,編程里有一些詞在字典里是查不到的,比如多態(tài),polymorphism,在書(shū)里卻可以學(xué)到。既然是headfirst系列的,少不了生動(dòng)活潑的風(fēng)格,書(shū)中經(jīng)常模擬師生對(duì)話來(lái)闡明某個(gè)模式的方方面面,講得很詳細(xì),盡管有時(shí)候看起來(lái)都有點(diǎn)啰嗦了,例子舉得不是太好,有的例子篇幅過(guò)長(zhǎng),實(shí)踐起來(lái)沒(méi)有必要,比如建造者模式,我打印出來(lái),代碼有15頁(yè),花了1個(gè)小時(shí)才全部type完。不管怎么說(shuō),寫(xiě)得要比閻宏的《java 與模式》好得多。那本例子舉得不好,不是豬八戒就是孫悟空的,總以為讀者理解不了似的,弄出那么多比喻來(lái),弄巧成拙,例子寫(xiě)得也不好,不全。
  •   英文的,不過(guò)語(yǔ)言容易看懂和理解,想學(xué)習(xí)模式的話值得一看的
  •   寫(xiě)得通俗易懂,正好也練練英文,我是配合著《大話設(shè)計(jì)模式》來(lái)看的,覺(jué)得效果不錯(cuò)。
  •   真真正正的“深入淺出”。強(qiáng)烈推薦。
  •   寫(xiě)得通俗易懂,深入淺出,主要是很有趣,能抓住讀者的心,步步引導(dǎo)深入,無(wú)形中得到提升,與一般讓人一看就乏困的書(shū)相比,本書(shū)的確相當(dāng)好
  •   書(shū)真的好舊啊。。同學(xué)都說(shuō)是舊書(shū)。還那么貴。。。書(shū)特別臟。。不過(guò)里面還不錯(cuò)。
  •   很好很好呀,經(jīng)典就是經(jīng)典!
  •   還是看原版比較好,講的非常透徹而且易懂
  •   很不錯(cuò)的一本書(shū),可以學(xué)習(xí)到很多東西,看英文版不用忍受蹩腳的翻譯
  •   感覺(jué)作者實(shí)際工作經(jīng)驗(yàn)不夠豐富,只舉些小貓小狗的例子來(lái)說(shuō)事。讀起來(lái)沒(méi)有腳踏實(shí)地的感覺(jué)。
  •   好書(shū)~推薦購(gòu)買。配合大話設(shè)計(jì)模式看
  •   這本書(shū)講得淺顯易懂,隨時(shí)英文,但是讀起來(lái)也還行,推薦購(gòu)買
  •   通俗易懂幽默風(fēng)趣,當(dāng)然這種方式不是每個(gè)人都喜歡
  •   設(shè)計(jì)模式的入門好書(shū),讀著不犯困。難能可貴
  •   非常喜歡里面的例子和解釋。
  •   設(shè)計(jì)模式入門書(shū)
  •   封面很誘惑哦
  •   收藏起來(lái)再說(shuō)!以后慢慢看!
  •   書(shū)店尾貨
  •   Head First系列里最經(jīng)典的一本
  •   設(shè)計(jì)模式的經(jīng)典
  •   這本書(shū)可是?。?/li>
  •   書(shū)不錯(cuò),值得買,絕對(duì)劃算
  •   真的是“深入淺出”
  •     。。。。。。書(shū)評(píng)開(kāi)始捏。。。。。。
      為了讓自己真正的讀一本書(shū)(源自《如何讀一本書(shū)》),所以開(kāi)始練習(xí)寫(xiě)書(shū)評(píng),對(duì)自己學(xué)到的東西進(jìn)行總結(jié),也為以后復(fù)習(xí)提供便利。以后也會(huì)對(duì)這篇書(shū)評(píng)進(jìn)行不斷的修改,希望自己能夠進(jìn)步~~~~~~啦啦啦~~~~~~
  •     確實(shí)是一本很不錯(cuò)的書(shū),值得去看看,特別是剛開(kāi)始入門的,圖文并茂,諒解的很透徹?。?!不看你會(huì)后悔的哦!??!
  •     這本書(shū)寫(xiě)得挺好的,通俗易懂。以前買了那本GoF的書(shū),試圖看了幾遍也沒(méi)看完幾個(gè)模式。每頁(yè)的信息量不大,書(shū)特別厚,所以看完以后會(huì)有一種錯(cuò)覺(jué):看完了好厚一本書(shū)!
      這本書(shū)把設(shè)計(jì)模式講清楚的同時(shí)把一些OO思想也解釋得很清楚,至少在合上書(shū)的時(shí)候”多用組合,少用繼承“這個(gè)原則已經(jīng)牢記于心。
      
      1. 代碼雖然是Java寫(xiě)的,但是很好懂
      書(shū)中的設(shè)計(jì)模式是以Java代碼展現(xiàn)的,不過(guò)學(xué)過(guò)C++的也能看懂,用C++實(shí)現(xiàn)也不是很難,注意以下幾點(diǎn)就可以了:
      * Java里的對(duì)象:類似C++里對(duì)象的引用
      * Java里的接口:在C++里,把類里的函數(shù)聲明為類似 virtual void f() = 0 就可以了
      * 當(dāng)談到“Java不支持多重繼承,所以只能...”時(shí),會(huì)心一笑就可以了
      
      2. 知道設(shè)計(jì)模式以后才知道代碼之后的原理
      初學(xué)Java的IO時(shí),經(jīng)常會(huì)碰到下面的代碼(代碼來(lái)源于stackoverflow):
       First open an inputstream of it:
       > FileInputStream fis = new FileInputStream("/objects.gz");
       We want speeeed, so let's buffer it in memory:
       > BufferedInputStream bis = new BufferedInputStream(fis);
       The file is gzipped, so we need to ungzip it:
       > GzipInputStream gis = new GzipInputStream(bis);
      以上的代碼寫(xiě)成一行就是 GzipInputStream gis = new GzipInputStream(new BufferedInputStream(new FileInputStream("/objects.gz")));
      其實(shí)上面用的就是裝飾者模式。知道這個(gè)模式之前,可能不知道為什么要那樣寫(xiě),為什么能那樣寫(xiě);知道之后,對(duì)代碼后面的世界又有了進(jìn)一步的理解。
  •     之前只在語(yǔ)言本身的層面徘徊,卻從沒(méi)想過(guò),在對(duì)象之上還有如此beautiful 的經(jīng)驗(yàn)化方法,所謂設(shè)計(jì)模式不像語(yǔ)言本身一些確定的語(yǔ)法條目,或是像算法,有一個(gè)固定的執(zhí)行流。這才是設(shè)計(jì)的偉大之處,也是更能夠體現(xiàn)程序員設(shè)計(jì)水平和個(gè)人造詣的東西。
      竟然抱著壇子上下的非清晰掃描版看了好久。確實(shí)生動(dòng)簡(jiǎn)單易懂的例子對(duì)于設(shè)計(jì)模式本身的理解很有好處。之前一直不喜歡這種寫(xiě)作風(fēng)格,所謂道可道非常道。覺(jué)得每一個(gè)具體的例子往往就能讓讀者的理解陷入偏頗,或是思維受到限制。但如今才發(fā)現(xiàn),往往對(duì)于一些抽樣的模式之類卻是肯定需要生動(dòng)有趣的例子來(lái)理解,隨著理解的加深,變回逐漸從局部轉(zhuǎn)向更為全面。
      讀罷有一個(gè)概念一直在腦中徘徊,設(shè)計(jì)模式追求的是清晰,易于維護(hù),易于擴(kuò)展的代碼。不管是接口的封裝,變和不變的分離,開(kāi)放擴(kuò)展,關(guān)閉修改,都是為了追求高效穩(wěn)定,易于維護(hù)和擴(kuò)展的代碼。這也是現(xiàn)代面向軟件設(shè)計(jì)的核心。從語(yǔ)言數(shù)據(jù)結(jié)構(gòu)到設(shè)計(jì)模式,確是一個(gè)很大的跳躍。
      深入淺出,當(dāng)之無(wú)愧。
  •     2010年開(kāi)始接觸設(shè)計(jì)模式,當(dāng)時(shí)看的是《大話設(shè)計(jì)模式》,翻完,沒(méi)啥實(shí)質(zhì)領(lǐng)悟。也許是當(dāng)年修行不夠悟道不深。之后幾年里設(shè)計(jì)模式對(duì)于我還是一個(gè)自認(rèn)為不能理解好的領(lǐng)域,買了四人幫的書(shū)也丟在一邊。因?yàn)楣ぷ髦兄饕肅,而模式多用面向?qū)ο笳Z(yǔ)言描述。我一直在思考如何在C中采用面向?qū)ο蟮挠^點(diǎn)來(lái)解耦,讓模塊更清晰可讀。3年里敏捷、重構(gòu),折騰了不少次,慢慢也能寫(xiě)出讓自己滿意的代碼。今年覺(jué)得有點(diǎn)底子了,終于下決心再次學(xué)習(xí)設(shè)計(jì)模式,買了這本最最深入淺出的,居然看得很清晰很明白。很多地方都留下了自己的筆記。突然間覺(jué)得這幾年的功夫沒(méi)白費(fèi),可能自己并沒(méi)有去可以學(xué)習(xí)、套用模式,但已經(jīng)在工作實(shí)踐中不自覺(jué)地運(yùn)用了很多模式。
      下一步,再認(rèn)真讀一遍四人幫的書(shū),再次感悟下經(jīng)典教材。
  •     利用公交時(shí)間讀完了這本書(shū),很是不錯(cuò),可看作入門書(shū)。
      
      入門后想讀一些設(shè)計(jì)模式匯總的書(shū),望豆油們推薦一本
      
      可惡的書(shū)評(píng),不能簡(jiǎn)短評(píng)論么
  •     第一次接觸Head First系列的時(shí)候是,head first web,剛開(kāi)始并不是很感冒,那本書(shū)是中文版。這次偶然地從圖書(shū)館借了本 Head First Design Patterns (英文版),一下子被里面的英語(yǔ)表達(dá)方式吸引住了。對(duì),我是從喜歡讀書(shū)中的英文句子轉(zhuǎn)而喜歡上該系列的書(shū)的。而且,在閱讀的過(guò)程中,我發(fā)現(xiàn)它講解的具體、易懂。值得推薦
  •     這是我看過(guò)最幽默最搞笑最親切同時(shí)又讓我收獲巨大的技術(shù)書(shū)籍!
      
      森森的膜拜Freeman(s)!Amen!
      
      深入淺出,娓娓道來(lái),有的地方能笑死你!
      
      不知是翻譯還是原著的問(wèn)題,有幾個(gè)小地方有點(diǎn)小錯(cuò)誤,個(gè)人觀點(diǎn),值得商榷。但是瑕不掩瑜啦!
      
      其實(shí)我最先買的那本是四人幫寫(xiě)的,四人幫那本是這本書(shū)的五分之一厚。但是這本書(shū)我只花了三天時(shí)間就讀完了!
      
      想學(xué)Design Patter嗎?趕緊買來(lái)看!強(qiáng)烈推薦!
      
      
  •     此書(shū)適合初學(xué)設(shè)計(jì)模式的,并且有一兩年工作經(jīng)驗(yàn)的更好,并且自己在工作中遇到很多重復(fù)代碼,自己感覺(jué)很垃圾的代碼,卻找不到好的方法更改的時(shí)候,你就看這本書(shū)把。你需要對(duì)多態(tài)非常了解哦。晚綁定啥的。不然看起來(lái)也費(fèi)勁的,俺是C# 書(shū)今天剛到, 感覺(jué)非常好
  •     算是第三遍了吧
      
      第一遍的時(shí)候是剛學(xué)java的時(shí)候看電子書(shū),當(dāng)時(shí)連策略模式都沒(méi)看明白,看不下去就放棄了。
      
      第二遍是前段時(shí)間看的,大概6月份吧,看的時(shí)候比第一次看的時(shí)候要順利很多,明白了挺多的東西,當(dāng)然也有挺多不明白,反復(fù)看也不明白的。但是看到狀態(tài)模式及往后的時(shí)候就多少有點(diǎn)對(duì)付事的感覺(jué)了,像我在讀暢銷書(shū)時(shí)候的讀法,大概粗略的掃上一遍就完事了。附錄中的剩余的模式根本就沒(méi)看。
      
      第三遍是搬到現(xiàn)在住的地方開(kāi)始看的,果然又比第二遍的時(shí)候感覺(jué)好了很多。甚至有挺多第二遍沒(méi)明白的模式,在我翻到目錄的時(shí)候就想到是怎么回事了,翻開(kāi)書(shū)頁(yè)一看,果然是我想的那樣,感覺(jué)很舒服。
      
      昨天看了狀態(tài)模式,記得第二遍看的時(shí)候覺(jué)得挺復(fù)雜的,現(xiàn)在倒也覺(jué)得沒(méi)那么復(fù)雜了。不知道即將看的代理模式和復(fù)合模式會(huì)怎么樣呢?
      
      現(xiàn)在的問(wèn)題是,我看了,但是沒(méi)太能記住,而且工作中寫(xiě)代碼,覺(jué)得什么都是可以用,但是又無(wú)論如何套不到我看的書(shū)里面,怎么辦呢?是因?yàn)槲疫€沒(méi)有理解么?還是說(shuō)因?yàn)槲抑皇强戳藭?shū)而沒(méi)有寫(xiě)代碼?
      
      下次看本別的書(shū)輔助一下
      
      
      ==============以上是2012年7月26日寫(xiě)的==========
      
      第四遍(*^__^*)
      
      最近不知道怎么想的,又把這書(shū)翻出來(lái)看,貌似又有些新的感覺(jué),記的比以前多了,依然存在的問(wèn)題是,工作中不知道怎么用,似乎還是處在死記硬背的階段,咋整?難道是因?yàn)槲抑皇强磿?shū),而沒(méi)有實(shí)際去畫(huà)UML類圖,也沒(méi)有寫(xiě)代碼的原因么?這確實(shí)是個(gè)問(wèn)題,可是,如果真的抱著電腦去寫(xiě)代碼,肯定寫(xiě)著寫(xiě)著就變成上網(wǎng)了。。。
      =============以上寫(xiě)于2014/2/11==============
      
      2014/2/23的下午,終于又讀完了一遍,看起來(lái)有了新的收獲。
  •     【strategy】 defines a family of algorithms, encapsulate each one and make them interchangable. strategy lets the algorithm vary independently from clients that use it.
      
      【observer】 defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.
      
      【decorator】 attach additional responsibilities to an object dynamically. decorator provide a flexible alternative to subclssing for extending functionality.
      
      【abstract factory】 provide an interface for creating famiilies of related or dependent objects without specifing their concrete classes.
      
      【factory method】 defines in interface for creating an object, but let subclss to decide which class to instantiate. factory method lets a class defer instantiation to the subclasses.
      
      【singleton】 ensure a class only has one instance and provide a gloval point of access to it.
      
      【command】 encapsulates a request as a object, thereby letting you parametrize clients with different request, quese or log request, and support undoable operations.
      
      【adaptor】 converts the interface of a class into another interface that clients expect. lets classes work together that couldn't otherwise because of incompatible interface.
      
      【facade】 provides a unified interface to a set of interfaces in a subsystem. facade defines a higher-level interface that makes the subsystem easier to use.
      
      【template】 define the skeleton of an algorithm in an operation, deferring some steps to subclasses. template method lets subclasses redefine certain steps of an algorithm without changing the algorithms' structure
      
      【iterator】 provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
      
      【composite】 compose objects into tree structure to represent part-whole hierachies. composite lets client treat individual object and compositions of objects equally.
      
      【state】 allow an object to alter its behavior when its internal state changes. the object will appear to change its class.
      
      【proxy】 provides a surrogate or placeholder for another object to control access to it.
      
      【compound】 i.e. MVC
  •     1.策略模式(Strategy)
       定義算法,將他們分別封裝起來(lái),讓他們可以相互替換,讓算法變化對(duì)客戶端透明。
      2.觀察者模式(Observer)
       解耦一系列對(duì)象的通知狀態(tài)。定義對(duì)象之間的一對(duì)多依賴,當(dāng)一端對(duì)象發(fā)生變換,通知多端。
      3.裝飾模式(Decorator)
       動(dòng)態(tài)將責(zé)任附加到對(duì)象上。對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉。
      4.工廠模式(Factory)
      工廠方法:定義一個(gè)創(chuàng)建對(duì)象的接口,由子類實(shí)現(xiàn)這個(gè)接口決定怎樣創(chuàng)建具體類。工廠方法把對(duì)象的創(chuàng)建延遲到子類。
      抽象工廠:定義一個(gè)接口,用于創(chuàng)建相關(guān)或依賴對(duì)象的家族,而不明確指定具體類。
      5.單例模式(Singleton)
       確保一個(gè)類只有一個(gè)實(shí)例,并且提供一個(gè)安全的全局訪問(wèn)點(diǎn)。
      如果對(duì)多線程沒(méi)有要求,可以直接在靜態(tài)方法中創(chuàng)建。
      如果存在資源競(jìng)爭(zhēng),采用“餓漢”方式創(chuàng)建。
      如果jdk4之后,可有采用double checked locking
      6.命令模式(Command)
       將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求,隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象。
      7.適配器模式(Adapter)
       改變一個(gè)接口成為一個(gè)客戶端希望的樣子。讓原本不兼容的接口能夠相互合作。
      8.外觀模式(Facade)
       簡(jiǎn)化系統(tǒng)接口,對(duì)客戶端提供一個(gè)簡(jiǎn)單接口。
      9.模板方法模式(Template Method)
       在方法中定義一個(gè)算法的骨架,而將一些步驟延遲到子類實(shí)現(xiàn)。使子類在不改變算法結(jié)構(gòu)的情況下,重新定義算法的某些步驟。
      10.迭代器模式(Iterator)
       提供一種方法順序訪問(wèn)集合中的每個(gè)元素,而又不暴露其內(nèi)部的表示。
      11.組合模式(Composite)
       允許你將對(duì)象組成樹(shù)形結(jié)構(gòu)來(lái)表現(xiàn)“整體/部分”的層次結(jié)構(gòu)。組合能讓客戶端以一致的方式處理個(gè)別對(duì)象和對(duì)象組合。
      12.狀態(tài)模式(State)
       允許對(duì)象內(nèi)部狀態(tài)改變時(shí),改變它的行為,對(duì)象看起來(lái)就行修改了它的類。
      13.代理模式(Proxy)
       為對(duì)象提供一個(gè)替身或者占位符來(lái)訪問(wèn)這個(gè)對(duì)象。
      14.復(fù)合模式
       結(jié)合多個(gè)模式,組成一個(gè)解決方案。
       MVC中:
       M:觀察者模式
       V:組合模式
       C:策略模式
  •     第一次讀的時(shí)候是幾年前,就被深深吸引了。當(dāng)時(shí)還是同事買。連續(xù)幾天都在。那時(shí)剛做編程也就是一年多了,在積累到了一定的程度之后,這本書(shū)剛好可以為自己打開(kāi)一扇門。知道了很多設(shè)計(jì)模式,正式自己苦苦追尋的一種改變。吸收了這些,對(duì)自己的架構(gòu)能力有很大的提升。
      同時(shí)這本還是比較幽默生動(dòng)的。代碼也很容易理解。而且還有后面的知識(shí)總結(jié)。談話。等等,都非常不容錯(cuò)。
      非常推薦新手或者有一定基礎(chǔ)的人去看。同時(shí)也要自己寫(xiě)那些代碼。
      過(guò)了幾年再去溫習(xí),也是非常有收獲的
  •      接觸這本書(shū)之前,我不知道設(shè)計(jì)模式是什么。但讀完這本書(shū)之后,讓我對(duì)于項(xiàng)目的設(shè)計(jì)充滿了興趣,也理解了為什么有些人一輩子只能夠做低級(jí)的程序員,一些人的工作年齡只是增加了他的經(jīng)驗(yàn),僅是對(duì)于某種語(yǔ)言的API更加熟悉。而設(shè)計(jì)模式,能夠增加我們的內(nèi)在,讓我們真正在編寫(xiě)代碼的時(shí)候,會(huì)考慮到OO設(shè)計(jì),會(huì)考慮到設(shè)計(jì)對(duì)于項(xiàng)目的影響,而促進(jìn)你去改進(jìn)自己的設(shè)計(jì)。
       想要脫離僅僅作為一個(gè)程序員的人,感覺(jué)先從這入手吧。當(dāng)然,需要有一些項(xiàng)目經(jīng)驗(yàn),才能更好地吸收。
  •     1.策略模式(Strategy)
       定義算法,將他們分別封裝起來(lái),讓他們可以相互替換,讓算法變化對(duì)客戶端透明。
      2.觀察者模式(Observer)
       解耦一系列對(duì)象的通知狀態(tài)。定義對(duì)象之間的一對(duì)多依賴,當(dāng)一端對(duì)象發(fā)生變換,通知多端。
      3.裝飾模式(Decorator)
       動(dòng)態(tài)將責(zé)任附加到對(duì)象上。對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉。
      4.工廠模式(Factory)
       * 工廠方法:定義一個(gè)創(chuàng)建對(duì)象的接口,由子類實(shí)現(xiàn)這個(gè)接口決定怎樣創(chuàng)建具體類。工廠方法把對(duì)象的創(chuàng)建延遲到子類。
       * 抽象工廠:定義一個(gè)接口,用于創(chuàng)建相關(guān)或依賴對(duì)象的家族,而不明確指定具體類。
      5.單例模式(Singleton)
       確保一個(gè)類只有一個(gè)實(shí)例,并且提供一個(gè)安全的全局訪問(wèn)點(diǎn)。
       * 如果對(duì)多線程沒(méi)有要求,可以直接在靜態(tài)方法中創(chuàng)建。
       * 如果存在資源競(jìng)爭(zhēng),采用“餓漢”方式創(chuàng)建。
       * 如果jdk4之后,可有采用double checked locking
      6.命令模式(Command)
       將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求,隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象。
      7.適配器模式(Adapter)
       改變一個(gè)接口成為一個(gè)客戶端希望的樣子。讓原本不兼容的接口能夠相互合作。
      8.外觀模式(Facade)
       簡(jiǎn)化系統(tǒng)接口,對(duì)客戶端提供一個(gè)簡(jiǎn)單接口。
      9.模板方法模式(Template Method)
       在方法中定義一個(gè)算法的骨架,而將一些步驟延遲到子類實(shí)現(xiàn)。使子類在不改變算法結(jié)構(gòu)的情況下,重新定義算法的某些步驟。
      10.迭代器模式(Iterator)
       提供一種方法順序訪問(wèn)集合中的每個(gè)元素,而又不暴露其內(nèi)部的表示。
      11.組合模式(Composite)
       允許你將對(duì)象組成樹(shù)形結(jié)構(gòu)來(lái)表現(xiàn)“整體/部分”的層次結(jié)構(gòu)。組合能讓客戶端以一致的方式處理個(gè)別對(duì)象和對(duì)象組合。
      12.狀態(tài)模式(State)
       允許對(duì)象內(nèi)部狀態(tài)改變時(shí),改變它的行為,對(duì)象看起來(lái)就行修改了它的類。
      13.代理模式(Proxy)
       為對(duì)象提供一個(gè)替身或者占位符來(lái)訪問(wèn)這個(gè)對(duì)象。
      14.復(fù)合模式
       結(jié)合多個(gè)模式,組成一個(gè)解決方案。
      MVC中:
      M:觀察者模式
      V:組合模式
      C:策略模式
      
  •     極易入門的一本書(shū),把設(shè)計(jì)模式講的通俗易懂。配合大量圖片,整本書(shū)顯得生動(dòng)有趣。讓人讀起來(lái)很是享受。
      
      但是這也使得整本書(shū)給人有點(diǎn)“不夠夯實(shí)”的感覺(jué),盡管書(shū)里講的內(nèi)容還是很權(quán)威的。大量異國(guó)文化的例子讓人感覺(jué)很是陌生(什么鴨子,或者皮薩餅等等)。現(xiàn)編現(xiàn)用的例子給人感覺(jué)有點(diǎn)隨意。個(gè)人覺(jué)得設(shè)計(jì)模式還是在有一定代碼量的情況下學(xué)習(xí)效果更好,更容易讓人引起共鳴(Personal View)。
      
      很適合初學(xué)者閱讀,強(qiáng)烈推薦。
  •     這是一本很輕松的書(shū)籍, 不屬于難啃的學(xué)院派風(fēng)格.
      但我還是斷斷續(xù)續(xù)看了接近一個(gè)月才看完, 工作實(shí)在太忙了, 每天只有在地鐵上抽出一點(diǎn)時(shí)間來(lái)閱讀. 這期間我總是看著看著就樂(lè)了, 就這樣開(kāi)心了一個(gè)月, 對(duì)設(shè)計(jì)模式也摸到了門道.
      書(shū)中介紹的都是一些基本的設(shè)計(jì)模式, 以附錄的形式給出了部分較高級(jí)的模式.
      看完這本書(shū), GOF的那本經(jīng)典書(shū)籍還是無(wú)法繞過(guò)的, 而且更關(guān)鍵的是, 需要注意在平時(shí)的工作中多思考一些設(shè)計(jì)和OO原則
  •      這本書(shū)磕磕碰碰,一路啃下,還是頗有成就感的——第一次讀完英文影印版的技術(shù)書(shū)籍,至少?gòu)谋砻嫔峡催@本書(shū)還是挺厚的大部頭。去年在上個(gè)東家實(shí)習(xí)時(shí)起意學(xué)習(xí)設(shè)計(jì)模式,之所以選這本書(shū),沒(méi)有選四人幫那本《設(shè)計(jì)模式》,源于一同事的推薦。確實(shí)這是本好書(shū),在此謝謝這位同事!不過(guò)讀完這本書(shū)也生感慨——以后還是少看英文的,太累了,如果有翻譯得不錯(cuò)的譯本,還是譯本吧——看英文版最明顯的好處只是能在星巴克裝文藝。
      
       當(dāng)初看這本書(shū)的序時(shí),發(fā)現(xiàn)作者之一喜歡下圍棋,還寫(xiě)過(guò)圍棋對(duì)弈程序,大感親切,發(fā)了封郵件給他欲交流計(jì)算機(jī)圍棋,當(dāng)然沒(méi)有收到回件??目呐雠隹吹貌凰爿p松(六級(jí)沒(méi)過(guò)),好在有朋友的鼓勵(lì)——一位大牛對(duì)我說(shuō),設(shè)計(jì)模式是程序員進(jìn)階的必由之路,好好學(xué)。深然其說(shuō)。
      
       歷來(lái)有對(duì)設(shè)計(jì)模式的批評(píng),舉其兩例:
      
       1)“設(shè)計(jì)模式讓軟件開(kāi)發(fā)生搬硬套現(xiàn)成的模式?!?br />   
       駁:軟件需求千變?nèi)f化,故軟件設(shè)計(jì)的最高境界應(yīng)當(dāng)是無(wú)招勝有招——視需求變化,或用23種模式,或自創(chuàng)模式,舉重若輕,不拘一格。但除非天縱奇才,無(wú)師自通,我等凡夫俗子還是需要學(xué)習(xí)已有的模式來(lái)“悟道”,以求更上一層樓。
      
       2)“設(shè)計(jì)模式反映編程語(yǔ)言的缺陷?!?br />   
       駁:對(duì)于C++這樣的對(duì)軟件工程支持不佳(我認(rèn)為確實(shí)如此)的古代編程語(yǔ)言,確實(shí)需要些設(shè)計(jì)模式來(lái)實(shí)現(xiàn)復(fù)雜的設(shè)計(jì)。而對(duì)于一些“先進(jìn)”的語(yǔ)言,很多設(shè)計(jì)模式顯得多余,因?yàn)檎Z(yǔ)言本身就包含了,或框架本身就實(shí)現(xiàn)了。以我相對(duì)熟悉的Objc為例,proxy pattern有著語(yǔ)言層面的支持,不需要那套復(fù)雜的結(jié)構(gòu);observer pattern有著框架層面的實(shí)現(xiàn)(Cocoa中的Notification),也不需要自己寫(xiě)。但設(shè)計(jì)模式依然值得學(xué)習(xí),乃至必須學(xué)習(xí)——若一直停留在應(yīng)用層面而不去深究個(gè)中道理,那將永遠(yuǎn)停留在菜鳥(niǎo)階段。例如我見(jiàn)過(guò)一牛人隨手用C++寫(xiě)個(gè)引用計(jì)數(shù)的模板(boost庫(kù)中的shared_ptr也支持引用計(jì)數(shù)),令我大為佩服——shared_ptr并不妨礙自己寫(xiě)一個(gè)引用計(jì)數(shù)模板。知其然亦知其所以然,應(yīng)用時(shí)方能如魚(yú)得水,駕輕就熟。
      
       非常喜歡這本書(shū)每章的“套路”,1)給出軟件需求,求設(shè)計(jì)。2)在不斷的探討中引入模式,并介紹該模式。3)為什么要這樣設(shè)計(jì),道理何在?然后引入一個(gè)面向?qū)ο笤瓌t。大致如此。這樣的套路也正好說(shuō)明,原則是道,模式為術(shù)。
      
       設(shè)計(jì)需要溯本求源的思考,絕非23個(gè)模式所能囊括。針對(duì)本質(zhì)設(shè)計(jì),而非針對(duì)功能設(shè)計(jì)——這是本人極為認(rèn)同的一句話。以移動(dòng)開(kāi)發(fā)為例,項(xiàng)目需求千變?nèi)f化,還“朝三暮四”,唯有看清本質(zhì),才能對(duì)癥下藥。
      
       “為學(xué)日益,為道日損?!?/li>
  •     Head First系列。書(shū)的出發(fā)點(diǎn)很好,想讓你知其然,更知其所以然。也確實(shí)做了比較大的努力。所以看起來(lái)和“傳統(tǒng)的”技術(shù)書(shū)籍差別很大。遺憾的是,書(shū)中舉得例子(如披薩店)和敘述、思維方式都是美國(guó)式的。如果你熟悉美國(guó)文化并具備美國(guó)式的交流和思維方式的能力。這本書(shū)無(wú)疑是非常適合的。但如果你和我一樣,可能會(huì)稍有些不習(xí)慣。覺(jué)得還是“傳統(tǒng)的”看起來(lái)順一些。但我最后想說(shuō)的是,認(rèn)真看,努力跟著書(shū)里的思維方式。你會(huì)獲益良多!
  •     雖然只是剛看了第一章還沒(méi)有全部看完,但可以確定的是這是我看過(guò)最寓教于樂(lè)的技術(shù)書(shū)籍。作者將要傳達(dá)的知識(shí)點(diǎn)安置在有趣的對(duì)話中,讓你捧腹大笑的同時(shí)思考這些問(wèn)題將如何解決,正如前言所述這樣的方式比起傳統(tǒng)報(bào)告更容易讓我們記憶深刻。
      另外值得一提的是書(shū)中的插圖,它很好的豐富了文字的內(nèi)涵,有助于我們理解作者要傳達(dá)的信息。如果所有的技術(shù)書(shū)籍都能如此,那我們的學(xué)習(xí)成本將大大下降。
  •     《Head first design pattern》向讀者很好地展現(xiàn)了OOP的基本原則和常見(jiàn)的幾種設(shè)計(jì)模式。對(duì)比經(jīng)典但卻晦澀難懂的GoF《設(shè)計(jì)模式》,可以發(fā)現(xiàn)Java比C++能更好解釋設(shè)計(jì)模式,我想這應(yīng)歸功于Java的對(duì)象引用機(jī)制和interface關(guān)鍵字。當(dāng)然這也跟本書(shū)中的例子淺顯易懂,GoF中的例子來(lái)源于實(shí)際開(kāi)發(fā)項(xiàng)目有關(guān)。若是想學(xué)習(xí)設(shè)計(jì)模式的話,這本書(shū)不可錯(cuò)過(guò)。這本書(shū)的寫(xiě)作風(fēng)格與排版也很有創(chuàng)意,值得一看!
      
      贊同書(shū)末尾提到的Keep it simple(KISS)原則。學(xué)會(huì)了設(shè)計(jì)模式后不要手里拿著把錘子,看什么都成釘子,一遇到問(wèn)題就想用設(shè)計(jì)模式去解決。設(shè)計(jì)模式是通過(guò)引入抽象層來(lái)提高代碼的靈活性,但抽象層作為間接層在提高了代碼的靈活性的同時(shí)也增加了復(fù)雜性,如果簡(jiǎn)潔的方案能解決問(wèn)題就沒(méi)必要?dú)㈦u用牛刀動(dòng)用設(shè)計(jì)模式。If you don't need it now, don't do it now.
      
      本書(shū)可以和GoF的《設(shè)計(jì)模式》、Bob大叔的《敏捷軟件開(kāi)發(fā)》交叉閱讀,這幾本書(shū)在內(nèi)容上相互補(bǔ)充相得益彰。
      
      讀書(shū)筆記:
      A Pattern is a solution to a problem in a context.
      
      Design Principle
      1, Identify the aspects of your application that vary and separate them from what stays the same.
      2, Program to an interface, not an implementation.
      3, Favor composition over inheritance.
      4, Strive for loosely coupled designs between objects that interact.(Observer)
      5, Classes should be open for extension, but closed for modification.(decorator)
      6, Depend upon abstractions. Do not depend upon concrete classes.(Abstract Factory)
      7, Least Knowledge Principle: Talk only to your immediate friends(Facade)
      8, The Hollywood Principle: Don't call us, we'll call you.(Template Method)
      9, Single responsibility Principle: A class should have only one reason to change.
      
      Strategy Pattern: defines a family of algorithms,encapsulates each one,and makes them interchangeable.Strategy Pattern let the algorithm vary independently from clients that use it.
      
      Observer Pattern: defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.
      
      Decorator Pattern: attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
      
      Factory Method Pattern: defines an interface for creating an object, but lest subclasses decide which class to instantiate. Factory method lets a class defer instantiation to subclasses.
      
      Abstract Factory Pattern: provides an interface for creating families of related or dependent objects without specifying their concrete classes.
      
      Singleton Pattern: ensures a class has only one instance, and provides a global point of access to it.
      
      Command Pattern: encapsulates a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests, and support undoable operations.
      
      Adapter Pattern: converts the interface of a class into another interface the clients expects. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.
      
      Facade Pattern: provides a unified interface to a set of interfaces in a subsystem. Facade defines a higher level interface that makes the subsystem easier to use.
      
      Template Method Pattern: defines the skeleton of an algorithm in a method, deferring some steps to subclass. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.
      
      Iterator Pattern: provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
      
      Composite Pattern: allows you to compose objects into tree structures to represents part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.
      
      State Pattern: allows an object to alter its behavior when its internal state changes. The object will appear to changes its class.
      
      Proxy Pattern: provides a surrogate or placeholder for another object to control access to it.
      
  •     不喜歡中國(guó)式教育的那種古板的書(shū),那樣很難免會(huì)遇到厭讀的情緒~~~
      
      一本書(shū)的成功之處就是讓人有興趣并且樂(lè)于去讀,對(duì)于技術(shù)類的書(shū)籍,能達(dá)到這一點(diǎn)是非常棒的。
      
      要想一次性完全讀懂《head first 設(shè)計(jì)模式》是不可能的,而且個(gè)人認(rèn)為設(shè)計(jì)模式不能亂用,有些時(shí)候用反而會(huì)更糟糕,這是初學(xué)者容易進(jìn)入的最大的誤區(qū),唉,~~~新手努力起飛中
  •     346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事???誰(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事啊?誰(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事?。空l(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事???誰(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事?。空l(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事?。空l(shuí)能解答?
      346頁(yè)之后,是307頁(yè),一直到322頁(yè),然后是363頁(yè),咋回事???誰(shuí)能解答?
      
  •     如果是中國(guó)人想研究設(shè)計(jì)模式的話,力薦研磨設(shè)計(jì)模式(我覺(jué)得這本書(shū)挺羅嗦的),作者的思維邏輯非常清晰,輕松上手就可以明白透徹。
      評(píng)論太短了,評(píng)論太短了,評(píng)論太短了,評(píng)論太短了,評(píng)論太短了,評(píng)論太短了。
      還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了。
  •   我也覺(jué)得這本書(shū)很有趣
 

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

京ICP備13047387號(hào)-7