GoF老法師私藏

GoF設計模式結構圖
個人的一些看法
我認為學習設計模式比較好的方法是這樣的:
- 先大致的瀏覽一遍各種模式,看到每種模式粗略的輪廓,能夠復述出一些主要模式的特征
- 針對一些常用的模式深入理解(不要一下子把二十幾種設計模式搞得面面俱到,倒背如流)
- 比較不同的模式,尤其是一些有共同特點的模式之間的差別
- 比較同一種模式在不同的文檔上的表述
- 理解不同模式的適用場景,多找一些具體的例子(從大量具體的例子中,讓大腦自己來上升到抽象)
- 比較運用這種模式和不運用這種模式的差別,總結使用這種模式之后帶來的好處
- 對擴展開放,對修改關閉,總結出擴展的方面以及修改的方面
- 在需要時,再去深入理解那些平時不太用到的模式
運用模式,而不要陷入到模式中,模式本身是為了讓問題變得更易于解決,而不是讓問題變得更加復雜。不要著眼于模式本身。學習設計模式的根本目的,是為了寫出靈活性更高、擴展性更好的軟件,而不是為了面試或者炫耀,看再多的書都不代表學會了設計模式,只有運用到自己的項目中,并且真正體現了某種設計模式的價值,那才算是學會了這種設計模式。學其他東西也是類似。最好是先從一種不好的設計開始,探討當需求變化時(比如增加新的類別,或者新的功能),這種不要的設計
常用的模式
常用與否并無定論,關鍵是看場合,但是一開始入手,還是需要有一個范圍,能夠讓人有的放矢。對此,我想最好的入門參考書無疑是《Head First Design Pattern》,那么就以此為綱,將上面所列的設計模式先深入挖掘一下。<br />
Head First Design Pattern詳細探討的模式
- Behavioral
- Observer
- Command
- Iterator
- Template Method
- State
- Structural
- Strategy
- Decorator
- Adapter
- Facade
- Composite
- Proxy
- Creational
- Factory Method
- Abstract Factory
- Singleton
設計模式按照難度來劃分
- Beginner
- Behavioral
- Observer
- Iterator
- Template Method
- Structural
- Strategy
- Decorator
- Adapter
- Facade
- Proxy
- Creational
- Factory Method
- Singleton
- Intermediate
- Behavioral
- Chain of responsibility
- Command
- Composite
- Interpreter
- Mediator
- Memento
- State
- Visitor
- Structural
- Bridge
- Flyweight
- Creational
- Abstract Factory
- Builder