工厂模式

#include<iostream>
#include<string.h>

using namespace std;

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

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

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

// 工厂类
class Factory {
public:
    virtual Product* createProduct() = 0;
};

// 具体工厂类A
class ConcreteFactoryA : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductA();
    }
};

// 具体工厂类B
class ConcreteFactoryB : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductB();
    }
};

//具体步骤是工厂A生产A类产品,A类产品调用功能operation函数使用产品的功能
int main() {
    // 创建具体工厂对象
    Factory* factoryA = new ConcreteFactoryA();
    Factory* factoryB = new ConcreteFactoryB();

    // 使用工厂对象创建具体产品对象
    Product* productA = factoryA->createProduct();
    Product* productB = factoryB->createProduct();

    // 调用产品对象的操作方法
    productA->operation();
    productB->operation();

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

    return 0;
}




posted @ 2023-06-01 14:11  铜锣湾陈昊男  阅读(10)  评论(0)    收藏  举报