1.前言html
写这个东西的目的,主要是为了本身能更好的掌握,而且灵活应用模式。其实你们在平时工做中有意无心的会用到不少模式,但并无仔细总结梳理,因此也是借此机会对以往开发设计作些总结、思考。java
那么,因为设计模式的资料太多,解读各异,部分模式的解释很是模糊,使人费解。为了统一标准,这里参考维基百科做为基准。维基百科中已经对每一个模式都作了详细的说明,并且相关资料也很丰富,因此不会对每一个模式都进行展开。git
文中参考维基百科将各个模式根据设计目的进行整理成表,以方便未来根据应用场景快速查找使用。github
在学习和使用以前,最好能下载下面提供的例子,github上的这些例子写地很是好,很直观。先把例子跑起来运行下,可以更好的理解这些模式。不过,例子有时候也会误导咱们。一个例子为了能正常运行起来,不得不包含一个完整程序所须要的各个角色,这里面的部分角色其实并非该设计模式所关注的,这就致使了咱们对模式关注点的误解。因此理解的时候要注意一个模式的边界在哪里。一样的,类图并不能体现设计者的所有意图,也会带有误导性,尤为是特征相近的几个模式,单从类图上是看不出区别的。有的时候,简单的从模式的名字出发,站在抽象的高度去理解反而更简单些(名字不是随便取的,它包含了设计者和总结者的深度思考和理解)。算法
另外这系列文章论述的概念比较抽象,须要阅读者有必定的开发设计经验,对各个模式有必定的了解,在阅读以前最好先过一遍各个模式。设计模式
2.相关资料微信
维基百科:https://en.wikipedia.org/wiki/Software_design_pattern (维基对各个模式的梳理比较详细) app
GoF设计模式:https://en.wikipedia.org/wiki/Design_Patterns (Gof【Gang of Four】指《设计模式》的四位做者,他们概括了最广为人知的23种设计模式)框架
相关例子:https://github.com/iluwatar/java-design-patterns (这里有不少例子,能够直接拿来使用)函数
3.速查表
建立型模式 | ||
名称 | 目的 | |
抽象工厂(Abstract factory) |
|
|
建造者 (Builder) |
|
|
依赖注入 (Dependency Injection) |
|
|
工厂方法 (Factory Method) |
|
|
延迟初始化 (Lazy Initialization) |
|
|
多例 (Multition) |
|
|
对象池 (Object pool) |
|
|
原型 (Prototype) |
|
|
单例 (Singleton) |
|
|
结构型模式 | ||
适配器 (Adapter,Wrapper or Translator) |
|
|
桥接 (Bridge) |
|
|
复合(Composite) |
|
|
装饰器(Decorator) |
|
|
外观 (Facade) |
|
|
享元 (Flyweight) |
|
http://www.cnblogs.com/zhenyulu/articles/55793.html |
标记(Marker) |
|
|
代理(Proxy) |
|
|
耦合(twin) |
|
|
行为型模式 | ||
责任链(Chain of responsibility) |
|
|
命令模式(Command) |
|
|
解释器模式(Interpreter) |
|
|
中介者模式(Mediator) |
|
|
备忘录(Memento) |
|
|
空对象(Null object) |
|
|
观察者(Observer or Publish/subscribe) |
|
|
雇工模式(Servant) |
|
|
规约模式(Specification) |
|
|
状态模式(State) |
|
|
策略模式(Strategy) |
|
|
模板方法(Template Method) |
|
|
访问者(Visitor) |
|
|
喜欢的话能够打赏一下哦!!!
支付宝
微信