对Gof的模式,拜读很久,也做过一两个工程,今天有读起来,突然很迷惑,
什么是创建,什么是结构,
比如Builder模式为什么是创建不是结构呢
如果gof的模式读了很久仍然理解不了的话,只能说明你敲的代码量还不够,我们对这个模式描述的再好也不可能超过这本被奉为经典的书。这个东西急不得。
GOF对三种类型的模式(创建型、结构型、行为型)的划分标准是:
创建型:该模式“主要”针对的是对象的创建;
行为性:该模式“主要”针对的是对象之间的协作;
结构性:该模式“主要”针对的是类的组织结构。
Builder模式主要解决的是一系列对象如何创建的问题(具体我不仔细描述了,请参见GOF原书),因此明显是属于创建型的(比如单例解决是如何让一个对象保持单个实例的问题,工厂方法主要解决是对象如何延迟创建的问题,等等)
上面的主要两个字加上了引号,意在说明并非创建型模式就没有结构,行为型模式就不会包含对象的创建,结构型模式对象之间就毫无交互可言,而是主要解决的问题是归属于哪一个类别的,如果单看类结构,忽视了一个模式的语义、语境,你是学不好设计模式的,举2个列子:
工厂方法(Factory Method)和模板方法(Template Method),从结构上来说是很类似的,工厂方法(标准的工厂方法)实际上也包含模板的语义;
组合模式(Composite)和解释器模式(Interperator)结构上也是很类似的,但是解释器是注重解释行为的模式,组合模式是注重表示行为的模式,所以二者的语义实际上差别很大,还是很容易区分开来的;