工厂对象模式简介
在GoF的《设计模式》一书中,对Factory Method/Object Method 意图描述如下:
定义一个用于创建对象的接口,让子类决定实例化是哪一个类。 Factory Metho是一个类的实例化延迟到其子类。
其结构图如下:
其中, 类 Product 定义了一类对象的接口。 ConcreteProduct 实现 Product 的接口。 Creator是工厂方法的包装器。ConcreteCreator 类实现Creator的接口。基于以上结构,每个ConcreteProduct必须带有一个 ConcreteCreator, 用来产生特定的ConcreteProduct。
这种实现的缺点,在《设计模式》一书中也提到过一点 是客户可能仅仅想创建一个特定的 ConcreteProduct 对象,但必须额外创建 Creator 的子类。 在ConcreteProduct 的演化上造成额外的工作量。 另一点从代码简洁之道角度来看,每一个 ConcreteCreator 的实现都几乎一样,就像一幕幕乏味的样板戏,简直就是鸡肋。
那么如何改进呢?
用boost factory & boost function实现对象工厂
文件:ObjectFactory.h