C++设计模式之工厂模式

工厂模式是一种创建型设计模式,旨在提供一种创建对象的接口,但允许子类决定实例化哪个类。工厂模式有多种形式,其中最常见的包括简单工厂模式、工厂方法模式和抽象工厂模式。

以下是一个简单工厂模式的例子,演示了如何使用工厂方法创建不同类型的产品对象:

#include 

// 抽象产品类
class Product {
public:
    virtual void display() = 0;
    virtual ~Product() {}
};

// 具体产品类A
class ConcreteProductA : public Product {
public:
    void display() override {
        std::cout << "This is Product A." << std::endl;
    }
};

// 具体产品类B
class ConcreteProductB : public Product {
public:
    void display() override {
        std::cout << "This is Product B." << std::endl;
    }
};

// 抽象工厂类
class Factory {
public:
    // 工厂方法,用于创建产品对象
    virtual Product* createProduct() = 0;
    virtual ~Factory() {}
};

// 具体工厂类A
class ConcreteFactoryA : public Factory {
public:
    // 实现工厂方法,创建具体产品A
    Product* createProduct() override {
        std::cout << "This is Factory A." << std::endl;
        return new ConcreteProductB();
    }
};

// 具体工厂类B
class ConcreteFactoryB : public Factory {
public:
    // 实现工厂方法,创建具体产品B
    Product* createProduct() override {
        std::cout << "This is Factory B." << std::endl;
        return new ConcreteProductA();
    }
};

int main() {
    // 使用工厂A创建产品A
    Factory* factoryA = new ConcreteFactoryA();
    Product* productA = factoryA->createProduct();
    productA->display();

    // 使用工厂B创建产品B
    Factory* factoryB = new ConcreteFactoryB();
    Product* productB = factoryB->createProduct();
    productB->display();

    // 释放资源
    delete factoryA;
    delete factoryB;
    delete productA;
    delete productB;

    return 0;
}

你可能感兴趣的:(c++,设计模式)