设计模式是针对面向对象设计的复杂性问题所提出的能做出应对变化、提高复用的设计方案。昨天晚上师父给我验收大话设计模式的时候,问了我为什么把23种设计模式分为创建型、结构型和行为型三种模式,当时我答不上来,就到网上查找了一翻。
由于设计模式在粒度和抽象层次上各不相同,所以设计模式的分类是根据目的和范围两个准则来进行划分的。
| 创建型Creational | 结构型Structural | 行为型Behavioral |
类 | Factory Method【工厂方法模式】 | Adapter【适配器模式】 | Interpreter【解释器模式】 Template Method【模板方法模式】 |
对象 | Abstract Factory【抽象工厂模式】 Builder【建造者模式】 Prototype【原型模式】 Singleton【单例模式】 | Bridge【桥接模式】 Composite【组合模式】 Decorator【装饰模式】 Façade【外观模式】 Flyweight【享元模式】 Proxy【代理模式】 | Chain of Responsibility【职责链模式】 Command【命令模式】 Iterator【迭代器模式】 Mediator【备忘录模式】 Observer【观察者模式】 State【状态模式】 Strategy【策略模式】 Visitor【访问者模式】 |
那什么是目的准则呢?即模式是用来完成什么工作的。模式依据其目的可分为创建型( Creational)、结构型( Structural)、或行为型( Behavioral )三种。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。
而范围准则则是指定模式主要是用于类还是用于对象。类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式的范畴。
创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象的组装方式。行为型类模式使用继承描述算法和控制流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。
下面是一张图,这张图是我从网上找来的,而这张图描述了设计模式之间的关系,觉得很好的,所以也拿过来分享一下。