设计模式之简单工厂
来源:互联网 发布:有哪些育儿软件 编辑:程序博客网 时间:2024/06/18 13:28
原理
工厂创建产品时, 通过传入相应的参数创建相应的产品
工厂
class SimpleFactory{ public: Products* Create(string str) { if(str == "A") return new Pro_A; else if(str == "B") return new Pro_B; else return NULL; }};
产品
class Products{public: virtual void Do() =0;};class Pro_A : public Products{public: virtual void Do() { cout<<"A is doing..."<<endl; }};class Pro_B : public Products{public: virtual void Do() { cout<<"B is doing..."<<endl; }};
Client
SimpleFactory sfac; Products* pro; pro = sfac.Create("A"); pro->Do(); pro = sfac.Create("B"); pro->Do();
优点
工厂类中包含了必要的逻辑判断, 根据客户端的选择动态实例化相关的类,比如这里客户端选择实例化产品”A”, “B”, 就获得了相应的具体产品.
缺点
当添加产品时, 要修改客户端的同时, 还要修改工厂里的Create方法;
完成上面同样的功能, 工厂方法就不需要修改Create, 只需要通过对Factory的继承来添加相应的产品;
工厂方法提供Factory接口, 让子类去实现具体产品的创建;
0 0
- 设计模式 之简单工厂+ 工厂模式
- 设计模式 之 简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂.
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- PHP自定义安装
- Android Studio使用技巧系列教程(七)
- Climbing Stairs
- Guava中TreeRangeMap结构简析
- QT实现多窗口切换
- 设计模式之简单工厂
- java中关于链表操作
- apache和php在网络中的位置
- 使用JS给value属性赋值的实例
- 求最大子段和的几种方法以及性能测试
- HDU 5319
- 有关于Tachyon的特性
- OpenCV 2.4+ C++ 平滑处理
- C语言中,各类型数据所占字节数及与它取值范围的关系