抽象工厂模式C++代码实现
时间: 2024-08-13 15:06:54 浏览: 34
抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关的对象,而无需指定它们具体的类。在C++中,我们可以使用继承和模板来实现这个模式。以下是一个简单的抽象工厂模式的代码实现:
```cpp
// 抽象产品接口
class ProductInterface {
public:
virtual ~ProductInterface() = default;
virtual void use() const = 0;
};
// 具体产品接口
class ConcreteProductA : public ProductInterface {
public:
void use() const override {
std::cout << "Using ConcreteProductA" << std::endl;
}
};
class ConcreteProductB : public ProductInterface {
public:
void use() const override {
std::cout << "Using ConcreteProductB" << std::endl;
}
};
// 抽象工厂
class AbstractFactory {
public:
virtual ~AbstractFactory() = default;
virtual ProductInterface* createProductA() const = 0;
virtual ProductInterface* createProductB() const = 0;
};
// 具体工厂
class ConcreteFactoryA : public AbstractFactory {
public:
ProductInterface* createProductA() const override {
return new ConcreteProductA();
}
ProductInterface* createProductB() const override {
return new ConcreteProductB();
}
};
// 使用抽象工厂
int main() {
AbstractFactory* factory = new ConcreteFactoryA();
ProductInterface* productA = factory->createProductA();
productA->use(); // 输出: Using ConcreteProductA
ProductInterface* productB = factory->createProductB();
productB->use(); // 输出: Using ConcreteProductB
delete productA;
delete productB;
delete factory;
return 0;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)