工厂模式有两种,一种是一个工厂只有一条流水线,只能生产一种特定的产品(小工厂);还有就是大工厂,一个工厂有好多条流水线,能够生产好多种产品,但是你接订单的时候必须要挑好流水线号,生产出相应的产品。
小工厂:
Factory 为工厂的基类,有一个纯虚函数factoryMethod();
Product为产品的基类,在这里什么也没给出。
通过继承,产生了两个子类FristFactory和FristProduct。
在这里FristFactory这个小工场值生产FristProduct。
Product* FristFactory::factoryMethod()
{
return new FristProduct;
}
大工厂模式,先要进行产品的注册,这样每次就会对工厂的代码就行修改,违反了开闭原则。
Product* FristBigFactory::factoryMethod(int i)
{
if (i == 1) {
return new FristProduct;
}
else {
return NULL;
}
}
在这里以int类型来作为标识符。