C++工厂模式

意图

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Facotry Method 使一个类的实例化延迟到其子类。

适用性

  • 当一个类不知道它所必须创建的对象的类的时候
  • 当一个类希望由它的子类来指定它所创建的对象的时候
  • 当类创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类时代理者局部化的时候

示意性代码

#include <iostream>

using namespace std;

class Product {

};

class ConcreteProductA : public Product {

};

class ConcreteProductB : public Product {

};

class Creator {
public:
    virtual Product* FactoryMethod() = 0;
};

class ConcreteCreatorA : public Creator {
    Product* FactoryMethod() override {
        return new ConcreteProductA();
    }
};

class ConcreteCreatorB : public Creator {
    Product* FactoryMethod() override {
        return new ConcreteProductB();
    }
};

class Client {
private:
    Product* _product;

public:
    Client(Creator* creator) {
        _product = creator->FactoryMethod();
    }

    ~Client() {
        delete _product;
    }
};

int main() {
    Creator* creator = new ConcreteCreatorB();
    Client client(creator);
}
posted @ 2022-07-26 15:30  岁月飞扬  阅读(36)  评论(0编辑  收藏  举报