GoF老法師私藏
個人的一些看法
我認為學習設(shè)計模式比較好的方法是這樣的:
- 先大致的瀏覽一遍各種模式近顷,看到每種模式粗略的輪廓,能夠復述出一些主要模式的特征
- 針對一些常用的模式深入理解(不要一下子把二十幾種設(shè)計模式搞得面面俱到剥懒,倒背如流)
- 比較不同的模式,尤其是一些有共同特點的模式之間的差別
- 比較同一種模式在不同的文檔上的表述
- 理解不同模式的適用場景,多找一些具體的例子(從大量具體的例子中丧裁,讓大腦自己來上升到抽象)
- 比較運用這種模式和不運用這種模式的差別礁阁,總結(jié)使用這種模式之后帶來的好處
- 對擴展開放巧号,對修改關(guān)閉,總結(jié)出擴展的方面以及修改的方面
- 在需要時姥闭,再去深入理解那些平時不太用到的模式
運用模式丹鸿,而不要陷入到模式中,模式本身是為了讓問題變得更易于解決棚品,而不是讓問題變得更加復雜靠欢。不要著眼于模式本身。學習設(shè)計模式的根本目的铜跑,是為了寫出靈活性更高门怪、擴展性更好的軟件,而不是為了面試或者炫耀锅纺,看再多的書都不代表學會了設(shè)計模式掷空,只有運用到自己的項目中,并且真正體現(xiàn)了某種設(shè)計模式的價值,那才算是學會了這種設(shè)計模式拣帽。學其他東西也是類似疼电。最好是先從一種不好的設(shè)計開始,探討當需求變化時(比如增加新的類別减拭,或者新的功能)蔽豺,這種不要的設(shè)計
常用的模式
常用與否并無定論,關(guān)鍵是看場合拧粪,但是一開始入手修陡,還是需要有一個范圍,能夠讓人有的放矢可霎。對此魄鸦,我想最好的入門參考書無疑是《Head First Design Pattern》,那么就以此為綱癣朗,將上面所列的設(shè)計模式先深入挖掘一下拾因。<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
設(shè)計模式按照難度來劃分
- 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