工厂方法模式--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; }