c++设计模式(2)--------简单工厂模式
2015-12-07 17:16
260 查看
简介
简单工厂模式,也叫做静态工厂模式,通过专门定义一个类来负责其他类的创建,被创建的类通常有一个共同的父类。1)工厂角色:是工厂模式的核心,负责创建实例对象内部的逻辑。可以被外界调用,创建所需要的产品。
2)抽象产品:简单工厂模式所创建产品的父类,负责描述产品的公共接口
3)具体产品:具体的实例对象
优缺点:工厂类是简单工厂模式的核心所在,包含必要的创建逻辑,能够根据外部给定的信息创建需要的具体产品。用户不要去了解具体的产品是如何创建以及如何组织的。工厂类集中了所有实例的创建逻辑,当产品增加时,需要修改工厂类内部的判断。扩展性不高。
例子
抽象产品类class Friut { public: virtual void sayName() = 0; };
具体产品类
class apple : public Friut { public: virtual void sayName() { cout<<"this is apple "<<endl; } }; class banana : public Friut { public: virtual void sayName() { cout<<"this is banana "<<endl; } };
工厂类的表示
class factory { public: static Friut * putCreate(string str)//静态方法意味着我们不需要去创建一个实例去调用该函数,可以直接通过类来调用,对于编程可以更加方便 { if(strcmp(str , "apple")) { return new apple; } else if(strcmp(str , "banana")) { return new banana; } else { cout<<"buzhiche"<<endl; } } private: };
客户就可以这样去调用了
#include<iostream.h> void main() { friut * fa = factory::putCreate("apple"); fa->sayName(); delete fa; system("pause"); }
总结
1)简单工厂类面向抽象产品类编程,而不是我们面向抽象类编程2)添加新类时,不会影响已存在的代码
3) 适用于根据不同条件创建不同的类,但是客户端必须知道工厂类和抽象产品类
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- PropertyChangeListener简单理解
- 关于指针的一些事情
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题