设计模式(简单工厂模式)
2015-09-18 10:29
281 查看
建立对象的类就如一个工厂,而需要被建立的对象就如一个个产品。
在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式;
由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。
#include <iostream> #include <vector> using namespace std; typedef enum ProductTypeTag { TypeA, TypeB, TypeC }PRODUCTTYPE; // Here is the product class class Product { public: virtual void Show() = 0; }; class ProductA : public Product { public: void Show() { cout<<"I'm ProductA"<<endl; } }; class ProductB : public Product { public: void Show() { cout<<"I'm ProductB"<<endl; } }; class ProductC : public Product { public: void Show() { cout<<"I'm ProductC"<<endl; } }; // Here is the Factory class class Factory { public: Product* CreateProduct(PRODUCTTYPE type) { switch (type) { case TypeA: return new ProductA(); case TypeB: return new ProductB(); case TypeC: return new ProductC(); default: return NULL; } } }; int main(int argc, char *argv[]) { // First, create a factory object Factory *ProductFactory = new Factory(); Product *productObjA = ProductFactory->CreateProduct(TypeA); if (productObjA != NULL) productObjA->Show(); Product *productObjB = ProductFactory->CreateProduct(TypeB); if (productObjB != NULL) productObjB->Show(); Product *productObjC = ProductFactory->CreateProduct(TypeC); if (productObjC != NULL) productObjC->Show(); delete ProductFactory; ProductFactory = NULL; delete productObjA; productObjA = NULL; delete productObjB; productObjB = NULL; delete productObjC; productObjC = NULL; return 0; }
相关文章推荐
- idea改字体大小
- #pragma预处理命令的使用
- Android三种实现定时器的方法
- vickate _触摸事件处理 实现UIView替代UIButton
- LeetCode Longest Common Prefix
- grails检索mongodb
- 多路径路由算法选择(1)——ECMP、WCMP
- LeetCode Longest Common Prefix
- 3D Touch开发技巧的笔记
- Cordova开发速记
- I/O数据总线(1)
- 关于Xcode7的一些改变
- java实现获取验证码工具类
- 9月上旬国内网站流量统计TOP5:淘宝网险夺第三
- Linux下用tcpdump抓包,wireshark可视化
- 升级xcode7适配iOS9出现的一些错误
- windows上jdk改版本后,环境变量不生效
- Win7与Ubuntu双系统时卸载Ubuntu的方法
- spring MVC 数据的绑定 验证 转换---属性编辑器
- Android实现双屏异显