用c++实现工厂模式

在C++中,可以使用工厂模式(Factory Pattern)来解耦对象的创建和使用。以下是一个简单的示例代码:
首先定义一个抽象产品类:

class Product {
public:
    virtual void operation() = 0;
    virtual ~Product() {}
};

然后定义具体产品类:

class ConcreteProductA : public Product {
public:
    void operation() override {
        std::cout << "ConcreteProductA::operation()" << std::endl;
    }
};

class ConcreteProductB : public Product {
public:
    void operation() override {
        std::cout << "ConcreteProductB::operation()" << std::endl;
    }
};

接下来定义工厂类:

class Factory {
public:
    virtual Product* createProduct() = 0;
    virtual ~Factory() {}
};

class ConcreteFactoryA : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductA();
    }
};

class ConcreteFactoryB : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductB();
    }
};

在客户端代码中,可以通过工厂类来创建产品对象:

int main() {
    Factory* factoryA = new ConcreteFactoryA();
    Product* productA = factoryA->createProduct();
    productA->operation();
    delete factoryA;
    delete productA;

    Factory* factoryB = new ConcreteFactoryB();
    Product* productB = factoryB->createProduct();
    productB->operation();
    delete factoryB;
    delete productB;

    return 0;
}

在这个示例中,定义了抽象产品类Product和两个具体产品类ConcreteProductAConcreteProductB。然后定义了抽象工厂类Factory和两个具体工厂类ConcreteFactoryAConcreteFactoryB,每个具体工厂类可以创建对应的产品对象。在客户端代码中,先创建对应的工厂对象,然后通过工厂对象来创建产品对象。

这样,客户端代码就和具体的产品类解耦了,通过工厂类来创建产品对象。如果需要添加新的产品,只需要定义新的产品类和工厂类即可,而不需要修改客户端代码。

该代码为人工智能教授,仅为学习用途

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值