深入淺出設計模式

出版時間:2005-11-1  出版社:東南大學出版社  作者:弗里曼  頁數:638  
Tag標簽:無  

內容概要

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

作者簡介

作者:(美)弗里曼Eric Freeman以及Elisabeth Freeman是作家、教育家以及技術發(fā)明者。他們在迪斯尼公司領導了四年的數字媒體以及因特網的開發(fā),后來他們將這些經驗應用在他們自己的媒體中,包括這本書中。Eric具有耶魯大學的計算機科學博士學位,Elisbeth具有耶魯大學的計算機科學碩士學位。    Kathy Sierra(javaranch.com的創(chuàng)始者)以及Bert Bates是暢銷的“深入淺出”(Head First)系列書籍的策劃者,也是Sun公司Java開發(fā)員認證考試的開發(fā)者。

書籍目錄

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

媒體關注與評論

書評本書榮獲2005年第十五屆Jolt通用類圖書震撼大獎?!  拔易蛱焓盏搅诉@本書,然后就開始閱讀……我簡直欲罷不能??釘懒?!內容相當有趣,涵蓋層面很廣,而且切中要點。這本書讓我感到印象深刻?!薄                狤rich Gamma,IBM頂級工程師、《Design Patterns》作者之一    “我感到讀這本書的效果等同于讀一千磅重的同類書的效果?!?                             ——Ward Cunningham,Wiki發(fā)明者、Hillside Group創(chuàng)始人    “本書趨近完美,因為它在提供專業(yè)知識的同時,仍然具有相當高的可讀性。敘述權威、文筆優(yōu)美。”                                  ——David Gelernter,耶魯大學計算機科學系教授    “這是我閱讀過的最有趣且最聰明的軟件設計書籍之一?!?                                  ——Aaron LaBerge,ESPN.com技術副主席

編輯推薦

☆本書榮獲2005年第十五屆Jolt通用類圖書震撼大獎 ☆"我昨天收到了這本書,然后就開始閱讀……我簡直欲罷不能??釘懒?內容相當有趣,涵蓋層面很廣,而且切中要點。這本書讓我感到印象深刻。"    ——Erich Gamma,IBM頂級工程師、《Design Patterns》作者之一☆"我感到讀這本書的效果等同于讀一千磅重的同類書的效果。"——Ward Cunningham,Wiki發(fā)明者、Hillside Group創(chuàng)始人☆"本書趨近完美,因為它在提供專業(yè)知識的同時,仍然具有相當高的可讀性。敘述權威、文筆優(yōu)美。"——David Gelernter,耶魯大學計算機科學系教授☆"這是我閱讀過的最有趣且最聰明的軟件設計書籍之一。" ——Aaron LaBerge,ESPN.com技術副主席☆If 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ā)明車輪(或者更差的是,沒有充氣車胎的輪子),所以從設計模式中尋求幫助,設計模式是過去人們面對同樣的軟件設計問題所得到的經驗。有了設計模式,就可以利用其他人的實踐經驗的精華,因此省下的時間可以用在其他的事情上,如:更有挑戰(zhàn)性的事情、更復雜的事情以及更有趣的事情。你想要學習:  ·重要的模式  ·何時使用某個模式,為何使用該模式  ·如何在你自己的設計中馬上采用這些模式  ·何時不該使用該模式(如何避免濫用模式)  ·某個模式是依據哪些面向對象設計原理而設計出來的  更重要的是,你想在學習設計模式的過程中不感覺到昏昏欲睡。如果你曾經讀過任何一本"深入淺出"(Head First)系列書籍,你就會知道能夠從《深入淺出設計模式》(影印版)中得到的是:透過豐富的視覺效果讓你的大腦充分地運作。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    深入淺出設計模式 PDF格式下載


用戶評論 (總計53條)

 
 

  •   書是我讀書的時候買的,看了一大半,但沒看完。 在面試的時候跟面試官掰了一些,后來就放那兒了, 工作了一段時間后,發(fā)現真應該詳細看看。 這本書以圖為主的講解方式,我很喜歡,比那本薄薄的設計模式容易理解,別看它厚,可看的時候很快,講得很細致
  •   非常好的一本書,通俗易懂,深入淺出推薦~~~
  •   質量好!絕對正版,很有幫助的,實用
  •   這本書只有亞馬遜有賣,head first系列的書看起來都很有趣,書的內容很好,插圖很豐富,本來還想買head first java影印版,但現在已經沒賣了,有點可惜,希望能重印head first java影印版
  •   花了1個多月的時間看完,講了13個常用的模式,其它11個并不是很常用,所以書里只是提了一個,如果你有經驗,會發(fā)現原來設計模式并不深奧,學好模式,對于看一些開源框架的源代碼的理解很有幫助,這本書需要你最好有6級的英文水平,否則看起來還是比較吃力的,生詞會海量地涌來。我是邊看邊查詞典,既學英語,又學技術,對于計算機英語的提高亦有好處,編程里有一些詞在字典里是查不到的,比如多態(tài),polymorphism,在書里卻可以學到。既然是headfirst系列的,少不了生動活潑的風格,書中經常模擬師生對話來闡明某個模式的方方面面,講得很詳細,盡管有時候看起來都有點啰嗦了,例子舉得不是太好,有的例子篇幅過長,實踐起來沒有必要,比如建造者模式,我打印出來,代碼有15頁,花了1個小時才全部type完。不管怎么說,寫得要比閻宏的《java 與模式》好得多。那本例子舉得不好,不是豬八戒就是孫悟空的,總以為讀者理解不了似的,弄出那么多比喻來,弄巧成拙,例子寫得也不好,不全。
  •   英文的,不過語言容易看懂和理解,想學習模式的話值得一看的
  •   寫得通俗易懂,正好也練練英文,我是配合著《大話設計模式》來看的,覺得效果不錯。
  •   真真正正的“深入淺出”。強烈推薦。
  •   寫得通俗易懂,深入淺出,主要是很有趣,能抓住讀者的心,步步引導深入,無形中得到提升,與一般讓人一看就乏困的書相比,本書的確相當好
  •   書真的好舊啊。。同學都說是舊書。還那么貴。。。書特別臟。。不過里面還不錯。
  •   很好很好呀,經典就是經典!
  •   還是看原版比較好,講的非常透徹而且易懂
  •   很不錯的一本書,可以學習到很多東西,看英文版不用忍受蹩腳的翻譯
  •   感覺作者實際工作經驗不夠豐富,只舉些小貓小狗的例子來說事。讀起來沒有腳踏實地的感覺。
  •   好書~推薦購買。配合大話設計模式看
  •   這本書講得淺顯易懂,隨時英文,但是讀起來也還行,推薦購買
  •   通俗易懂幽默風趣,當然這種方式不是每個人都喜歡
  •   設計模式的入門好書,讀著不犯困。難能可貴
  •   非常喜歡里面的例子和解釋。
  •   設計模式入門書
  •   封面很誘惑哦
  •   收藏起來再說!以后慢慢看!
  •   書店尾貨
  •   Head First系列里最經典的一本
  •   設計模式的經典
  •   這本書可是?。?/li>
  •   書不錯,值得買,絕對劃算
  •   真的是“深入淺出”
  •     。。。。。。書評開始捏。。。。。。
      為了讓自己真正的讀一本書(源自《如何讀一本書》),所以開始練習寫書評,對自己學到的東西進行總結,也為以后復習提供便利。以后也會對這篇書評進行不斷的修改,希望自己能夠進步~~~~~~啦啦啦~~~~~~
  •     確實是一本很不錯的書,值得去看看,特別是剛開始入門的,圖文并茂,諒解的很透徹!?。〔豢茨銜蠡诘呐叮。?!
  •     這本書寫得挺好的,通俗易懂。以前買了那本GoF的書,試圖看了幾遍也沒看完幾個模式。每頁的信息量不大,書特別厚,所以看完以后會有一種錯覺:看完了好厚一本書!
      這本書把設計模式講清楚的同時把一些OO思想也解釋得很清楚,至少在合上書的時候”多用組合,少用繼承“這個原則已經牢記于心。
      
      1. 代碼雖然是Java寫的,但是很好懂
      書中的設計模式是以Java代碼展現的,不過學過C++的也能看懂,用C++實現也不是很難,注意以下幾點就可以了:
      * Java里的對象:類似C++里對象的引用
      * Java里的接口:在C++里,把類里的函數聲明為類似 virtual void f() = 0 就可以了
      * 當談到“Java不支持多重繼承,所以只能...”時,會心一笑就可以了
      
      2. 知道設計模式以后才知道代碼之后的原理
      初學Java的IO時,經常會碰到下面的代碼(代碼來源于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);
      以上的代碼寫成一行就是 GzipInputStream gis = new GzipInputStream(new BufferedInputStream(new FileInputStream("/objects.gz")));
      其實上面用的就是裝飾者模式。知道這個模式之前,可能不知道為什么要那樣寫,為什么能那樣寫;知道之后,對代碼后面的世界又有了進一步的理解。
  •     之前只在語言本身的層面徘徊,卻從沒想過,在對象之上還有如此beautiful 的經驗化方法,所謂設計模式不像語言本身一些確定的語法條目,或是像算法,有一個固定的執(zhí)行流。這才是設計的偉大之處,也是更能夠體現程序員設計水平和個人造詣的東西。
      竟然抱著壇子上下的非清晰掃描版看了好久。確實生動簡單易懂的例子對于設計模式本身的理解很有好處。之前一直不喜歡這種寫作風格,所謂道可道非常道。覺得每一個具體的例子往往就能讓讀者的理解陷入偏頗,或是思維受到限制。但如今才發(fā)現,往往對于一些抽樣的模式之類卻是肯定需要生動有趣的例子來理解,隨著理解的加深,變回逐漸從局部轉向更為全面。
      讀罷有一個概念一直在腦中徘徊,設計模式追求的是清晰,易于維護,易于擴展的代碼。不管是接口的封裝,變和不變的分離,開放擴展,關閉修改,都是為了追求高效穩(wěn)定,易于維護和擴展的代碼。這也是現代面向軟件設計的核心。從語言數據結構到設計模式,確是一個很大的跳躍。
      深入淺出,當之無愧。
  •     2010年開始接觸設計模式,當時看的是《大話設計模式》,翻完,沒啥實質領悟。也許是當年修行不夠悟道不深。之后幾年里設計模式對于我還是一個自認為不能理解好的領域,買了四人幫的書也丟在一邊。因為工作中主要用C,而模式多用面向對象語言描述。我一直在思考如何在C中采用面向對象的觀點來解耦,讓模塊更清晰可讀。3年里敏捷、重構,折騰了不少次,慢慢也能寫出讓自己滿意的代碼。今年覺得有點底子了,終于下決心再次學習設計模式,買了這本最最深入淺出的,居然看得很清晰很明白。很多地方都留下了自己的筆記。突然間覺得這幾年的功夫沒白費,可能自己并沒有去可以學習、套用模式,但已經在工作實踐中不自覺地運用了很多模式。
      下一步,再認真讀一遍四人幫的書,再次感悟下經典教材。
  •     利用公交時間讀完了這本書,很是不錯,可看作入門書。
      
      入門后想讀一些設計模式匯總的書,望豆油們推薦一本
      
      可惡的書評,不能簡短評論么
  •     第一次接觸Head First系列的時候是,head first web,剛開始并不是很感冒,那本書是中文版。這次偶然地從圖書館借了本 Head First Design Patterns (英文版),一下子被里面的英語表達方式吸引住了。對,我是從喜歡讀書中的英文句子轉而喜歡上該系列的書的。而且,在閱讀的過程中,我發(fā)現它講解的具體、易懂。值得推薦
  •     這是我看過最幽默最搞笑最親切同時又讓我收獲巨大的技術書籍!
      
      森森的膜拜Freeman(s)!Amen!
      
      深入淺出,娓娓道來,有的地方能笑死你!
      
      不知是翻譯還是原著的問題,有幾個小地方有點小錯誤,個人觀點,值得商榷。但是瑕不掩瑜啦!
      
      其實我最先買的那本是四人幫寫的,四人幫那本是這本書的五分之一厚。但是這本書我只花了三天時間就讀完了!
      
      想學Design Patter嗎?趕緊買來看!強烈推薦!
      
      
  •     此書適合初學設計模式的,并且有一兩年工作經驗的更好,并且自己在工作中遇到很多重復代碼,自己感覺很垃圾的代碼,卻找不到好的方法更改的時候,你就看這本書把。你需要對多態(tài)非常了解哦。晚綁定啥的。不然看起來也費勁的,俺是C# 書今天剛到, 感覺非常好
  •     算是第三遍了吧
      
      第一遍的時候是剛學java的時候看電子書,當時連策略模式都沒看明白,看不下去就放棄了。
      
      第二遍是前段時間看的,大概6月份吧,看的時候比第一次看的時候要順利很多,明白了挺多的東西,當然也有挺多不明白,反復看也不明白的。但是看到狀態(tài)模式及往后的時候就多少有點對付事的感覺了,像我在讀暢銷書時候的讀法,大概粗略的掃上一遍就完事了。附錄中的剩余的模式根本就沒看。
      
      第三遍是搬到現在住的地方開始看的,果然又比第二遍的時候感覺好了很多。甚至有挺多第二遍沒明白的模式,在我翻到目錄的時候就想到是怎么回事了,翻開書頁一看,果然是我想的那樣,感覺很舒服。
      
      昨天看了狀態(tài)模式,記得第二遍看的時候覺得挺復雜的,現在倒也覺得沒那么復雜了。不知道即將看的代理模式和復合模式會怎么樣呢?
      
      現在的問題是,我看了,但是沒太能記住,而且工作中寫代碼,覺得什么都是可以用,但是又無論如何套不到我看的書里面,怎么辦呢?是因為我還沒有理解么?還是說因為我只是看了書而沒有寫代碼?
      
      下次看本別的書輔助一下
      
      
      ==============以上是2012年7月26日寫的==========
      
      第四遍(*^__^*)
      
      最近不知道怎么想的,又把這書翻出來看,貌似又有些新的感覺,記的比以前多了,依然存在的問題是,工作中不知道怎么用,似乎還是處在死記硬背的階段,咋整?難道是因為我只是看書,而沒有實際去畫UML類圖,也沒有寫代碼的原因么?這確實是個問題,可是,如果真的抱著電腦去寫代碼,肯定寫著寫著就變成上網了。。。
      =============以上寫于2014/2/11==============
      
      2014/2/23的下午,終于又讀完了一遍,看起來有了新的收獲。
  •     【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)
       定義算法,將他們分別封裝起來,讓他們可以相互替換,讓算法變化對客戶端透明。
      2.觀察者模式(Observer)
       解耦一系列對象的通知狀態(tài)。定義對象之間的一對多依賴,當一端對象發(fā)生變換,通知多端。
      3.裝飾模式(Decorator)
       動態(tài)將責任附加到對象上。對擴展開放,對修改封閉。
      4.工廠模式(Factory)
      工廠方法:定義一個創(chuàng)建對象的接口,由子類實現這個接口決定怎樣創(chuàng)建具體類。工廠方法把對象的創(chuàng)建延遲到子類。
      抽象工廠:定義一個接口,用于創(chuàng)建相關或依賴對象的家族,而不明確指定具體類。
      5.單例模式(Singleton)
       確保一個類只有一個實例,并且提供一個安全的全局訪問點。
      如果對多線程沒有要求,可以直接在靜態(tài)方法中創(chuàng)建。
      如果存在資源競爭,采用“餓漢”方式創(chuàng)建。
      如果jdk4之后,可有采用double checked locking
      6.命令模式(Command)
       將請求封裝成對象,以便使用不同的請求,隊列或者日志來參數化其他對象。
      7.適配器模式(Adapter)
       改變一個接口成為一個客戶端希望的樣子。讓原本不兼容的接口能夠相互合作。
      8.外觀模式(Facade)
       簡化系統(tǒng)接口,對客戶端提供一個簡單接口。
      9.模板方法模式(Template Method)
       在方法中定義一個算法的骨架,而將一些步驟延遲到子類實現。使子類在不改變算法結構的情況下,重新定義算法的某些步驟。
      10.迭代器模式(Iterator)
       提供一種方法順序訪問集合中的每個元素,而又不暴露其內部的表示。
      11.組合模式(Composite)
       允許你將對象組成樹形結構來表現“整體/部分”的層次結構。組合能讓客戶端以一致的方式處理個別對象和對象組合。
      12.狀態(tài)模式(State)
       允許對象內部狀態(tài)改變時,改變它的行為,對象看起來就行修改了它的類。
      13.代理模式(Proxy)
       為對象提供一個替身或者占位符來訪問這個對象。
      14.復合模式
       結合多個模式,組成一個解決方案。
       MVC中:
       M:觀察者模式
       V:組合模式
       C:策略模式
  •     第一次讀的時候是幾年前,就被深深吸引了。當時還是同事買。連續(xù)幾天都在。那時剛做編程也就是一年多了,在積累到了一定的程度之后,這本書剛好可以為自己打開一扇門。知道了很多設計模式,正式自己苦苦追尋的一種改變。吸收了這些,對自己的架構能力有很大的提升。
      同時這本還是比較幽默生動的。代碼也很容易理解。而且還有后面的知識總結。談話。等等,都非常不容錯。
      非常推薦新手或者有一定基礎的人去看。同時也要自己寫那些代碼。
      過了幾年再去溫習,也是非常有收獲的
  •      接觸這本書之前,我不知道設計模式是什么。但讀完這本書之后,讓我對于項目的設計充滿了興趣,也理解了為什么有些人一輩子只能夠做低級的程序員,一些人的工作年齡只是增加了他的經驗,僅是對于某種語言的API更加熟悉。而設計模式,能夠增加我們的內在,讓我們真正在編寫代碼的時候,會考慮到OO設計,會考慮到設計對于項目的影響,而促進你去改進自己的設計。
       想要脫離僅僅作為一個程序員的人,感覺先從這入手吧。當然,需要有一些項目經驗,才能更好地吸收。
  •     1.策略模式(Strategy)
       定義算法,將他們分別封裝起來,讓他們可以相互替換,讓算法變化對客戶端透明。
      2.觀察者模式(Observer)
       解耦一系列對象的通知狀態(tài)。定義對象之間的一對多依賴,當一端對象發(fā)生變換,通知多端。
      3.裝飾模式(Decorator)
       動態(tài)將責任附加到對象上。對擴展開放,對修改封閉。
      4.工廠模式(Factory)
       * 工廠方法:定義一個創(chuàng)建對象的接口,由子類實現這個接口決定怎樣創(chuàng)建具體類。工廠方法把對象的創(chuàng)建延遲到子類。
       * 抽象工廠:定義一個接口,用于創(chuàng)建相關或依賴對象的家族,而不明確指定具體類。
      5.單例模式(Singleton)
       確保一個類只有一個實例,并且提供一個安全的全局訪問點。
       * 如果對多線程沒有要求,可以直接在靜態(tài)方法中創(chuàng)建。
       * 如果存在資源競爭,采用“餓漢”方式創(chuàng)建。
       * 如果jdk4之后,可有采用double checked locking
      6.命令模式(Command)
       將請求封裝成對象,以便使用不同的請求,隊列或者日志來參數化其他對象。
      7.適配器模式(Adapter)
       改變一個接口成為一個客戶端希望的樣子。讓原本不兼容的接口能夠相互合作。
      8.外觀模式(Facade)
       簡化系統(tǒng)接口,對客戶端提供一個簡單接口。
      9.模板方法模式(Template Method)
       在方法中定義一個算法的骨架,而將一些步驟延遲到子類實現。使子類在不改變算法結構的情況下,重新定義算法的某些步驟。
      10.迭代器模式(Iterator)
       提供一種方法順序訪問集合中的每個元素,而又不暴露其內部的表示。
      11.組合模式(Composite)
       允許你將對象組成樹形結構來表現“整體/部分”的層次結構。組合能讓客戶端以一致的方式處理個別對象和對象組合。
      12.狀態(tài)模式(State)
       允許對象內部狀態(tài)改變時,改變它的行為,對象看起來就行修改了它的類。
      13.代理模式(Proxy)
       為對象提供一個替身或者占位符來訪問這個對象。
      14.復合模式
       結合多個模式,組成一個解決方案。
      MVC中:
      M:觀察者模式
      V:組合模式
      C:策略模式
      
  •     極易入門的一本書,把設計模式講的通俗易懂。配合大量圖片,整本書顯得生動有趣。讓人讀起來很是享受。
      
      但是這也使得整本書給人有點“不夠夯實”的感覺,盡管書里講的內容還是很權威的。大量異國文化的例子讓人感覺很是陌生(什么鴨子,或者皮薩餅等等)?,F編現用的例子給人感覺有點隨意。個人覺得設計模式還是在有一定代碼量的情況下學習效果更好,更容易讓人引起共鳴(Personal View)。
      
      很適合初學者閱讀,強烈推薦。
  •     這是一本很輕松的書籍, 不屬于難啃的學院派風格.
      但我還是斷斷續(xù)續(xù)看了接近一個月才看完, 工作實在太忙了, 每天只有在地鐵上抽出一點時間來閱讀. 這期間我總是看著看著就樂了, 就這樣開心了一個月, 對設計模式也摸到了門道.
      書中介紹的都是一些基本的設計模式, 以附錄的形式給出了部分較高級的模式.
      看完這本書, GOF的那本經典書籍還是無法繞過的, 而且更關鍵的是, 需要注意在平時的工作中多思考一些設計和OO原則
  •      這本書磕磕碰碰,一路啃下,還是頗有成就感的——第一次讀完英文影印版的技術書籍,至少從表面上看這本書還是挺厚的大部頭。去年在上個東家實習時起意學習設計模式,之所以選這本書,沒有選四人幫那本《設計模式》,源于一同事的推薦。確實這是本好書,在此謝謝這位同事!不過讀完這本書也生感慨——以后還是少看英文的,太累了,如果有翻譯得不錯的譯本,還是譯本吧——看英文版最明顯的好處只是能在星巴克裝文藝。
      
       當初看這本書的序時,發(fā)現作者之一喜歡下圍棋,還寫過圍棋對弈程序,大感親切,發(fā)了封郵件給他欲交流計算機圍棋,當然沒有收到回件??目呐雠隹吹貌凰爿p松(六級沒過),好在有朋友的鼓勵——一位大牛對我說,設計模式是程序員進階的必由之路,好好學。深然其說。
      
       歷來有對設計模式的批評,舉其兩例:
      
       1)“設計模式讓軟件開發(fā)生搬硬套現成的模式?!?br />   
       駁:軟件需求千變萬化,故軟件設計的最高境界應當是無招勝有招——視需求變化,或用23種模式,或自創(chuàng)模式,舉重若輕,不拘一格。但除非天縱奇才,無師自通,我等凡夫俗子還是需要學習已有的模式來“悟道”,以求更上一層樓。
      
       2)“設計模式反映編程語言的缺陷?!?br />   
       駁:對于C++這樣的對軟件工程支持不佳(我認為確實如此)的古代編程語言,確實需要些設計模式來實現復雜的設計。而對于一些“先進”的語言,很多設計模式顯得多余,因為語言本身就包含了,或框架本身就實現了。以我相對熟悉的Objc為例,proxy pattern有著語言層面的支持,不需要那套復雜的結構;observer pattern有著框架層面的實現(Cocoa中的Notification),也不需要自己寫。但設計模式依然值得學習,乃至必須學習——若一直停留在應用層面而不去深究個中道理,那將永遠停留在菜鳥階段。例如我見過一牛人隨手用C++寫個引用計數的模板(boost庫中的shared_ptr也支持引用計數),令我大為佩服——shared_ptr并不妨礙自己寫一個引用計數模板。知其然亦知其所以然,應用時方能如魚得水,駕輕就熟。
      
       非常喜歡這本書每章的“套路”,1)給出軟件需求,求設計。2)在不斷的探討中引入模式,并介紹該模式。3)為什么要這樣設計,道理何在?然后引入一個面向對象原則。大致如此。這樣的套路也正好說明,原則是道,模式為術。
      
       設計需要溯本求源的思考,絕非23個模式所能囊括。針對本質設計,而非針對功能設計——這是本人極為認同的一句話。以移動開發(fā)為例,項目需求千變萬化,還“朝三暮四”,唯有看清本質,才能對癥下藥。
      
       “為學日益,為道日損。”
  •     Head First系列。書的出發(fā)點很好,想讓你知其然,更知其所以然。也確實做了比較大的努力。所以看起來和“傳統(tǒng)的”技術書籍差別很大。遺憾的是,書中舉得例子(如披薩店)和敘述、思維方式都是美國式的。如果你熟悉美國文化并具備美國式的交流和思維方式的能力。這本書無疑是非常適合的。但如果你和我一樣,可能會稍有些不習慣。覺得還是“傳統(tǒng)的”看起來順一些。但我最后想說的是,認真看,努力跟著書里的思維方式。你會獲益良多!
  •     雖然只是剛看了第一章還沒有全部看完,但可以確定的是這是我看過最寓教于樂的技術書籍。作者將要傳達的知識點安置在有趣的對話中,讓你捧腹大笑的同時思考這些問題將如何解決,正如前言所述這樣的方式比起傳統(tǒng)報告更容易讓我們記憶深刻。
      另外值得一提的是書中的插圖,它很好的豐富了文字的內涵,有助于我們理解作者要傳達的信息。如果所有的技術書籍都能如此,那我們的學習成本將大大下降。
  •     《Head first design pattern》向讀者很好地展現了OOP的基本原則和常見的幾種設計模式。對比經典但卻晦澀難懂的GoF《設計模式》,可以發(fā)現Java比C++能更好解釋設計模式,我想這應歸功于Java的對象引用機制和interface關鍵字。當然這也跟本書中的例子淺顯易懂,GoF中的例子來源于實際開發(fā)項目有關。若是想學習設計模式的話,這本書不可錯過。這本書的寫作風格與排版也很有創(chuàng)意,值得一看!
      
      贊同書末尾提到的Keep it simple(KISS)原則。學會了設計模式后不要手里拿著把錘子,看什么都成釘子,一遇到問題就想用設計模式去解決。設計模式是通過引入抽象層來提高代碼的靈活性,但抽象層作為間接層在提高了代碼的靈活性的同時也增加了復雜性,如果簡潔的方案能解決問題就沒必要殺雞用牛刀動用設計模式。If you don't need it now, don't do it now.
      
      本書可以和GoF的《設計模式》、Bob大叔的《敏捷軟件開發(fā)》交叉閱讀,這幾本書在內容上相互補充相得益彰。
      
      讀書筆記:
      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.
      
  •     不喜歡中國式教育的那種古板的書,那樣很難免會遇到厭讀的情緒~~~
      
      一本書的成功之處就是讓人有興趣并且樂于去讀,對于技術類的書籍,能達到這一點是非常棒的。
      
      要想一次性完全讀懂《head first 設計模式》是不可能的,而且個人認為設計模式不能亂用,有些時候用反而會更糟糕,這是初學者容易進入的最大的誤區(qū),唉,~~~新手努力起飛中
  •     346頁之后,是307頁,一直到322頁,然后是363頁,咋回事?。空l能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事啊?誰能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事啊?誰能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事?。空l能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事?。空l能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事啊?誰能解答?
      346頁之后,是307頁,一直到322頁,然后是363頁,咋回事?。空l能解答?
      
  •     如果是中國人想研究設計模式的話,力薦研磨設計模式(我覺得這本書挺羅嗦的),作者的思維邏輯非常清晰,輕松上手就可以明白透徹。
      評論太短了,評論太短了,評論太短了,評論太短了,評論太短了,評論太短了。
      還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了,還太短了。
  •   我也覺得這本書很有趣
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7