入門設計模式,以下兩本書哪一本比較好?

設計模式 (豆瓣)

Head First 設計模式(中文版) (豆瓣)

剛在遊戲公司里實習了3個月,感覺自己寫代碼很沒有條理,想學習下設計模式這方面的知識,不知道這兩本書哪一本比較好?


先看第二本 再看第一本

《大話》不用買了,那是 BL 小說(逃


我說個土法:

1、寫個掃雷遊戲(和Windows XP的版本所有細節保持一致,從造型到生效到玩法到設置選項)

2、用2000行寫完

3、用1000行寫完

4、用500行寫完

5、用250行寫完

寫不下去的時候就打開設計模式查查或者換個UI框架,或者換個語言,等等等等。

當然我推薦你先用GDI來寫,這樣有挑戰。

是的,完成第五點後,活用設計模式對你來說根本不算事兒。


head first


入門的話 head first吧,或者《大話設計模式》 這本書也還不錯,不然直接看《設計模式》 看不懂,至少我是的


推薦 《研磨設計模式》,適合新手,很詳細


head first,不過該書的缺點是有些啰嗦。建議第一遍讀的時候,都看看每種設計模式前一半,先了解這種模式想要解決的基礎問題,對於設計模式有一定了解後再細讀後面的擴展


1. 先看一句話:對介面編程,封裝變化。

2. 寫代碼。

3. 翻gof,或題主提到的任意書。

4. 寫代碼。

如果上來就來第3步,看哪本書都不行。頂多博聞強識,記住了,可以吹牛逼了(但仍然寫不好代碼


我看過《易學設計模式》,覺得還不錯,能夠很容易理解各種設計模式的應用場景,優缺點。另外,我覺得學習設計模式更重要的是在實踐中多思考,不斷重構代碼。所以隨便看一本對那些經典設計模式有些了解,遇到類似場景可以想到就可以了。設計模式本來是前人重構代碼中總結的經驗。


個人建議還是初學者還是別看什麼設計模式了,現在答主最需要的是大量編碼,多看看有經驗實力雄厚的同事的代碼,學會模仿他們的設計思想,工作方式,思維方式,個人覺得,應當首先培養這樣的習慣:

(1)做功能前,先仔細分析需求是什麼,所做功能要達到什麼目的,規則是什麼。

(2)思考設計方案,可多想幾套,多和有經驗的同事討論,或者說多請教,並且思考設計的可行性(是否可測試,是否足夠簡單)

(3)編碼

(4)測試

以我自己的經驗來看,代碼寫的不清晰的主因還是做功能前沒有分析清楚需求或者是設計方案沒想清楚,而非僅僅是不懂設計模式而已。很多時候,你在模仿別人的同時,已經學會了一些設計模式的運用了,在欠缺實踐背景下強行看設計模式,效果不佳。


如果你寫PHP,看我的小站就行:
寫個PHP也可以像Java一樣玩得風生水起:

PHP設計模式簡介


當然是head first 設計模式,不管怎麼說學習方法很重要,我看這本書的時候沒有感到學模式的枯燥乏味,但最後總結的時候卻發現掌握度很高。這才是一本好書該具備的。


我覺得 《head first》和《大華設計模式》都不好,這兩本書只是教你談論設計模式,而不是設計模式本身。


英語怎麼樣?還不錯可以看這個哦,不好也能結合谷歌翻譯慢慢看。。。

http://gameprogrammingpatterns.com


大話設計模式 故事說得不錯^_^


第一次知乎碼字超過100!!

入門的話,我也推薦head first。

其實每次學一門新的基礎語言我都會首選head first。

(PS:

如果條件允許的話,更加推薦看英文版。

一來會更容易領會作者的意圖和設計概念;二來你能熟悉一些術語,當你要學其他語言或者框架時,最新的doc也都是全英的,你平時積累下來的術語和語感更有助你學習)

順便是嘗試運用多種設計模式在項目中,就算搞爛了也沒所謂,反正能還原。但你會更清楚什麼條件下哪種設計模式會更好。


head first

我看得懂的都適合入門,相信我


head first 感覺不錯,另外一本是設計模式之禪,這本書是先從設計原則這個總綱說起,然後再講解各具體模式的適應場景。因為我是學習C語言的。把C++內存對象模型搞明白之後,對理解繼承與多態機制很好幫助。也就從語言角度去看待為什麼這麼做可以。最後說下,其實還是針對具體項目而言的。用的最多的可能就是觀察者模式(發布訂閱模式),生產者消費者模型等通用模型。總的來說還是結合具體項目來說吧。紙上得來終覺淺,絕知此事要躬行


我建議你就看 閻宏寫的 《java與模式》 這本書把設計模式解釋的非常好


建議Head First,看著比較簡單,好入門。 四人幫的書好歸好,細節省略了很多,看著費勁。


兩本都是好書,關鍵看是否適合你,設計模式這本書裡面的例子是用smalltalk和c++寫的。headfirst的例子則是用Java寫的。用一種自己熟悉的語言學習能夠事半功倍。

不過設計模式本身是一種設計思想,是前人在面向對象(object oriented,oo)開發過程中總結的行之有效的設計方案。所以首先了解一下面向對象編程都有什麼原則,對理解設計模式更加有幫助。

說一下我的經驗吧。因為我對c++語言比較熟悉,所以先看的四人組的設計模式。結果就是讀起來非常艱澀,拿起書的時候能看懂,放下書實際做工程的時候不知道怎麼去運用。之後買了headfirst,這本書理解起來比四人組的設計模式簡單很多,而且書中會提到oo開發的很多原則,每種設計模式對應的哪幾種oo原則。我建議你先了解一下oo的原則,先在實際的項目里使用一些簡單的設計模式,體會一下前人是怎麼解決問題的,這樣解決能帶來什麼好處。

最後再說一下,設計模式是方法,編程語言只是實現的手段,如果你同時會Java和c++,我建議兩本書都看看(敏捷軟體開發也可以看)。對比的看效果更好。比方說有些設計模式在Java中使用介面實現,c++中用多重繼承實現,你就會發現,咦?原來這傢伙和語言沒關係呀。

再ps一下:如果你編程經驗豐富,學不學設計模式真的不重要。因為工作中面對實際問題你會不自覺用出來的方法其實就有設計模式的影子。不如學習學習演算法什麼的。


推薦閱讀:

python如何將變數名轉化為同名字元串?
你怎麼看待現在的 QQ 群?它有哪些痛點?
電腦上的麥克和耳機插孔為什麼不像手機一樣是一個,而是兩個插孔?
為什麼大城市的一些學生會離開家鄉上大學?
3.5mm 耳機插孔可以傳輸什麼信息?

TAG:程序員 | 編程 | 信息技術IT | 編程學習 | 設計模式 |