设计模式(一) 简单工厂模式
来源:互联网 发布:最花钱的游戏知乎 编辑:程序博客网 时间:2024/05/17 02:54
对于工厂模式,具体上可以分为三类:
- 简单工厂模式;
- 工厂方法模式;
- 抽象工厂模式。
- 在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式;
- 由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。
上面的UML图表示:ProductA,ProductB,ProductC继承于Product,其中方法Show是public属性的,Factory类创造产品的方法CreateProduct依赖于ProductA,ProductB,ProductC。
简单的C++实现 模型如下:
#include<iostream>using namespace std;class Product {public: virtual void show() =0;};class ProductA : public Product {public: virtual void show(){cout<<" I am A"<<endl;} };class ProductB : public Product {public: virtual void show(){cout<<" I am B"<<endl;} };class ProductC : public Product {public: virtual void show(){cout<<" I am C"<<endl;} };enum ProductType{TypeA, TypeB, TypeC};class Factory{public:Product * CreateProduct(ProductType type){Product *temp;switch(type){case TypeA:temp=new ProductA();break;case TypeB:temp=new ProductB();break;case TypeC:temp=new ProductC();break;default:return NULL;}return temp;}};int main(int argc, char *argv[]){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;}
0 0
- 工厂设计模式一 简单工厂模式
- 设计模式一 简单工厂设计模式
- 设计模式一 简单工厂
- 设计模式一:简单工厂
- 设计模式(一)--简单工厂模式(1)
- 设计模式(一)---简单工厂模式
- java设计模式一 简单工厂模式
- 设计模式(一):简单工厂模式
- 设计模式(一)简单工厂模式
- 大话设计模式(一)简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一)--简单工厂模式
- 设计模式笔记一:简单工厂模式
- 设计模式(一)简单工厂模式
- 设计模式(一) 简单工厂模式
- 设计模式一 简单工厂模式
- 设计模式(一) 简单工厂模式
- Java设计模式《一》简单工厂模式
- FutureTask 源代码深刻解读
- 拼接模型坐标系的理解(五)
- UIView层次切换(bringSubviewToFront,sendSubviewToBack)的使用
- 在 Node.js 中读写 Redis 的数据(失效时间和TTL) 【已翻译100%】
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 设计模式(一) 简单工厂模式
- C# 操控滚动条
- Andorid 布局layout_margin和padding分析
- 【干货分享】流程DEMO-事务呈批表
- c++ 函数指针
- Python yield解析
- 编写更好的 Java 单元测试的 7 个技巧
- 使用 XHR、jQuery 和 Fetch 实现 AJAX
- 每天一个linux命令(28):tar命令