鸟瞰设计模式
2017-03-30 本文已影响0人
離枝
GoF老法师私藏
![](https://img.haomeiwen.com/i3810750/c91c753916bfa230.png)
个人的一些看法
我认为学习设计模式比较好的方法是这样的:
- 先大致的浏览一遍各种模式,看到每种模式粗略的轮廓,能够复述出一些主要模式的特征
- 针对一些常用的模式深入理解(不要一下子把二十几种设计模式搞得面面俱到,倒背如流)
- 比较不同的模式,尤其是一些有共同特点的模式之间的差别
- 比较同一种模式在不同的文档上的表述
- 理解不同模式的适用场景,多找一些具体的例子(从大量具体的例子中,让大脑自己来上升到抽象)
- 比较运用这种模式和不运用这种模式的差别,总结使用这种模式之后带来的好处
- 对扩展开放,对修改关闭,总结出扩展的方面以及修改的方面
- 在需要时,再去深入理解那些平时不太用到的模式
运用模式,而不要陷入到模式中,模式本身是为了让问题变得更易于解决,而不是让问题变得更加复杂。不要着眼于模式本身。学习设计模式的根本目的,是为了写出灵活性更高、扩展性更好的软件,而不是为了面试或者炫耀,看再多的书都不代表学会了设计模式,只有运用到自己的项目中,并且真正体现了某种设计模式的价值,那才算是学会了这种设计模式。学其他东西也是类似。最好是先从一种不好的设计开始,探讨当需求变化时(比如增加新的类别,或者新的功能),这种不要的设计
常用的模式
常用与否并无定论,关键是看场合,但是一开始入手,还是需要有一个范围,能够让人有的放矢。对此,我想最好的入门参考书无疑是《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