设计模式——设计模式空间

GOF中对设计模式的分类(以范围分类)

设计模式——设计模式空间

  GOF中对23中设计模式,有两种分类方法,通常对目的准则分类的方法比较清楚,因为章节设计就是根据这种方式来的,但是忽略了范围准则——指定模式主要用于类还是对象。

  类模式处理类和之类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上说,几乎所有模式都使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式的范畴。
  创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象的组装方式。行为型类模式使用继承描述算法和控制流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。

  有了这个角度的分类作为辅助,对于设计模式的实际实现应该会有帮助,不过在实际遇到问题,需要使用设计模式时,肯定是先从“目的”角度考虑,什么设计模式能够解决我们当前遇到的问题。

以范围分类的对比实例

设计模式——设计模式空间
  从“设计模式空”表中,能够看到Adapter模式在类模式和对象模式中都有,查看适配器模式的类图可以看到有两幅图,上部分是“类模式”,以继承Adaptee实现适配,下部分是“对象模式”,以委托Adaptee实现适配。
  用这种方式理解设计模式分类中的类、对象模式就比较清楚了。