[大话设计模式] 第1章: 简单工厂模式
2017-07-31 22:49
387 查看
适用场景
需要创建的对象很多,通常包含switch case或者if else语句,此时将对象的创建移入工厂类中由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。
UML类图
![](https://images2017.cnblogs.com/blog/755739/201707/755739-20170731224746911-1774647966.png)
ProductA、ProductB和ProductC继承自Product虚拟类,Show方法是不同产品的自描述;Factory依赖于ProductA、ProductB和ProductC,Factory根据不同的条件创建不同的Product对象。
C++实现
#include <iostream> using namespace std; typedef enum { TypeA = 0, TypeB, TypeC, } PRODUCTTYPE; class Product { public: virtual ~Product(){} virtual void show() = 0; }; class ProductA : public Product { public: void show(){ cout << "ProductA" << endl; } }; class ProductB : public Product { public: void show(){ cout << "ProductB" << endl; } }; class ProductC : public Product { public: void show(){ cout << "ProductC" << endl; } }; class Factory { public: Product *create_product(PRODUCTTYPE type); }; Product *Factory::create_product(PRODUCTTYPE type) { Product *pro; switch(type) { case TypeA: pro = new ProductA(); break; case TypeB: pro = new ProductB(); break; case TypeC: pro = new ProductC(); break; default: pro == NULL; } return pro; } int main() { Factory *proFactory = new Factory(); Product *proA = proFactory->create_product(TypeA); if(proA) proA->show(); Product *proB = proFactory->create_product(TypeB); if(proB) proB->show(); Product *proC = proFactory->create_product(TypeC); if(proC) proC->show(); delete proA; delete proB; delete proC; delete proFactory; return 0; }
相关文章推荐
- 《大话设计模式》之--第1章 代码无错就是优?----简单工厂模式
- 《大话设计模式》读书笔记-第1章 简单工厂模式
- 《大话设计模式》之--第1章 代码无错就是优?----简单工厂模式
- 大话设计模式-第1章代码无错就是优?-简单的工厂模式
- 大话设计模式 第1章 代码无错就是优? 简单工厂模式
- 大话设计模式--简单工厂模式
- 大话设计模式(一)简单工厂模式
- 读书笔记系列1:大话设计模式 -- 简单工厂模式
- 大话设计模式-简单工厂模式
- 简单工厂模式--《大话设计模式》读书笔记
- 简单工厂模式---《大话设计模式》笔记
- <一>大话设计模式之简单工厂模式
- 大话设计模式---简单工厂模式
- 大话设计模式(C++实现)--简单工厂模式
- 大话设计模式(1)简单工厂模式
- 大话设计模式1 简单工厂模式 策略模式
- 大话设计模式中简单工厂模式的计算器实例的C++代码
- 大话设计模式之简单工厂模式
- 《大话设计模式》num01---简单工厂模式
- 大话设计模式之简单的工厂模式