工厂方法模式就是一个工厂只负责一种产品的生产,当增加新的产品时,不用修改现有工厂类,但需增加新的工厂类与新的产品相对应。
#include <iostream> using namespace std; //产品基类 class Product { public: virtual void create() = 0; virtual ~Product(){} }; //产品A class ProductA : public Product { public: void create(){ cout << "A create()" << endl;} }; //产品B class ProductB : public Product { public: void create(){ cout << "B create()" << endl;} }; //工厂基类 class Factory { public: virtual Product* createProduct() = 0; virtual ~Factory(){} }; //工厂A class FactoryA :public Factory { public: Product* createProduct() { return new ProductA(); } }; //工厂B class FactoryB : public Factory { public: Product* createProduct() { return new ProductB(); } }; int main() { Factory* fa = new FactoryA(); Factory* fb = new FactoryB(); Product* pa = fa->createProduct(); Product* pb = fb->createProduct(); pa->create(); pb->create(); delete pa; pa = nullptr; delete pb; pb = nullptr; delete fa; fa = nullptr; delete fb; fb = nullptr; }