在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
和两个具体产品类ConcreteProductA
和ConcreteProductB
。然后定义了抽象工厂类Factory和两个具体工厂类ConcreteFactoryA
和ConcreteFactoryB
,每个具体工厂类可以创建对应的产品对象。在客户端代码中,先创建对应的工厂对象,然后通过工厂对象来创建产品对象。
这样,客户端代码就和具体的产品类解耦了,通过工厂类来创建产品对象。如果需要添加新的产品,只需要定义新的产品类和工厂类即可,而不需要修改客户端代码。
该代码为人工智能教授,仅为学习用途