工厂方法模式--5种创建型模式之一

核心思想:
把 工厂 和 产品 都给抽象出来 -> 抽象工厂、 抽象产品。
每一个 具体产品 对应一个 具体工厂, 具体工厂 可生产一种 具体产品。
可以实现工厂的多态(一个抽象工厂指针可以指向多个种类的工厂)
可以实现产品的多态(一个抽象产品指针可以指向多个种类的产品)
符合开闭原则。当添加新的具体产品时,要添加新的具体工厂,不用改变已有的代码。
# include <iostream>
using namespace std;
//抽象产品
class AbsProduct {
public:
//展示产品
virtual void show() = 0;
};
//抽象工厂
class AbsFatory {
public:
//生产产品
virtual AbsProduct *createProduct() = 0;
};
//具体产品1
class Product1 : public AbsProduct {
public:
//展示产品
virtual void show() {
cout << "具体产品1" << endl;
}
};
//具体工厂1
class Fatory1 : public AbsFatory {
public:
//生产产品
virtual AbsProduct *createProduct() {
return new Product1;
}
};
int main()
{
//实例化具体工厂
AbsFatory *fatory = new Fatory1;
//多态成产产品
AbsProduct *product = fatory->createProduct();
//多态展示产品
product->show();
return 0;
}
浙公网安备 33010602011771号