设计模式 - 工厂方法(Factory Method) C++实现
2015-04-21 21:36
751 查看
工厂方法(Factory Method)
意图:定义一个用于创建对象的接口,让子类决定实例化哪个类。解决简单工厂模式不支持开闭原则的缺点。实现:如UML图所示,客户类针对抽象产品类和抽象工厂类编程。当需要添加一个产品的时候,只需要增加一个产品类和对应的工厂类。符合开闭原则
uml:
ps 发现了一个Linux下面画UML很好用的软件 astah (community版免费)
#include <iostream> using namespace std; class AbsProduct { public : virtual void draw() = 0; }; class ProductA : public AbsProduct { public : virtual void draw() { cout << "Product A" << endl; } }; class ProductB : public AbsProduct { public : virtual void draw() { cout << "Product B" << endl; } }; class AbsFactory { public : virtual AbsProduct * createProduct() = 0; }; class FactoryA : public AbsFactory { public : virtual AbsProduct * createProduct() { AbsProduct * product = new ProductA(); return product; } }; class FactoryB : public AbsFactory { public : virtual AbsProduct * createProduct() { AbsProduct * product = new ProductB(); return product; } }; int main() { AbsFactory * factory = new FactoryA(); AbsProduct * product = factory->createProduct(); product->draw(); delete factory; factory = new FactoryB(); delete product; product = factory->createProduct(); product->draw(); delete factory; factory = NULL; delete product; product = NULL; return 0; }
运行结果:
相关文章推荐
- C++设计模式之三:Factory Method(工厂方法)
- 浅谈C++设计模式之工厂方法(Factory Method)
- c++ 设计模式8 (Factory Method 工厂方法)
- c++ 设计模式8 (Factory Method 工厂方法)
- 23种设计模式-FactoryMethod(工厂方法)设计模式
- 设计模式的征途—3.工厂方法(Factory Method)模式
- 【设计模式】——工厂方法FactoryMethod
- C++设计模式 factory工厂模式,实现绘制几何形状
- Java设计模式——工厂方法(Factory Method)
- 设计模式工厂方法(FactoryMethod)
- 设计模式第二节:Factory Method(工厂方法)
- 【设计模式】创建型模式之工厂方法Factory Method
- 设计模式二: 工厂方法(Factory Method)
- 23种设计模式-FactoryMethod工厂方法
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- 设计模式学习笔记四:工厂方法(Factory Method)
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- 设计模式之3 - 工厂方法Factory Method
- 设计模式之工厂方法Factory Method