c++实现抽象工厂模式
时间: 2023-09-25 16:16:36 浏览: 108
抽象工厂模式是一种创建型设计模式,其主要目的是提供一个接口,用于创建一系列相关或相互依赖对象,而无需指定其具体类。
在 C++ 中,实现抽象工厂模式需要以下步骤:
1. 定义抽象工厂类,该类包含一组纯虚函数,用于创建一系列相关对象。例如:
```
class AbstractFactory {
public:
virtual AbstractProductA* createProductA() = 0;
virtual AbstractProductB* createProductB() = 0;
};
```
2. 定义具体工厂类,实现抽象工厂类中的虚函数,用于创建具体对象。例如:
```
class ConcreteFactory1 : public AbstractFactory {
public:
AbstractProductA* createProductA() {
return new ConcreteProductA1();
}
AbstractProductB* createProductB() {
return new ConcreteProductB1();
}
};
class ConcreteFactory2 : public AbstractFactory {
public:
AbstractProductA* createProductA() {
return new ConcreteProductA2();
}
AbstractProductB* createProductB() {
return new ConcreteProductB2();
}
};
```
3. 定义抽象产品类,该类包含一组纯虚函数,用于定义产品的接口。例如:
```
class AbstractProductA {
public:
virtual void operationA() = 0;
};
class AbstractProductB {
public:
virtual void operationB() = 0;
};
```
4. 定义具体产品类,实现抽象产品类中的虚函数,用于定义具体产品。例如:
```
class ConcreteProductA1 : public AbstractProductA {
public:
void operationA() {
// 具体实现
}
};
class ConcreteProductA2 : public AbstractProductA {
public:
void operationA() {
// 具体实现
}
};
class ConcreteProductB1 : public AbstractProductB {
public:
void operationB() {
// 具体实现
}
};
class ConcreteProductB2 : public AbstractProductB {
public:
void operationB() {
// 具体实现
}
};
```
5. 在客户端代码中,使用抽象工厂类创建对象。例如:
```
AbstractFactory* factory = new ConcreteFactory1();
AbstractProductA* productA = factory->createProductA();
AbstractProductB* productB = factory->createProductB();
productA->operationA();
productB->operationB();
delete productA;
delete productB;
delete factory;
```
以上就是 C++ 实现抽象工厂模式的基本步骤。通过抽象工厂模式,我们可以将对象的创建和使用分离,从而提高代码的可维护性和可扩展性。
阅读全文