设计模式 - 简单工厂模式(C++)
来源:互联网 发布:薛之谦和周杰伦知乎 编辑:程序博客网 时间:2024/04/28 00:46
一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。
1.静态工厂方法统一管理对象的创建。
静态工厂方法通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。
2.静态工厂方法推迟了产品的实例化。
通过XML配置文件就能改变具体要创建的产品实例,修改为其它的产品实例,代码不须重新编译。
classFile.h
#pragma onceclass basicObject{public:basicObject(void);~basicObject(void);virtual int operation_function(int a,int b);private:int tempa;int tempb;};class addObject : public basicObject{public:addObject(void){};~addObject(void){};virtual int operation_function(int a,int b);};class subObject : public basicObject{public:subObject(void){};~subObject(void){};virtual int operation_function(int a,int b);};class mulObject : public basicObject{public:mulObject(){};~mulObject(){};virtual int operation_function(int a,int b);};class divObject : public basicObject{public:divObject(){};~divObject(){};virtual int operation_function(int a,int b);};class tochObject : public basicObject{public:tochObject(){};~tochObject(){};virtual int operation_function(int a,int b);};class ArithOperatorFactory{public:ArithOperatorFactory(){};~ArithOperatorFactory(){};basicObject* CreateArithOperator(const char chsrc);};
classFile.cpp#include "StdAfx.h"#include "classFile.h"basicObject::basicObject(void) : tempa(0),tempb(0){}basicObject::~basicObject(void){}int basicObject::operation_function(int a,int b){return 0;}int addObject::operation_function(int a,int b){return a + b;}int subObject::operation_function(int a,int b){return a - b;}int mulObject::operation_function(int a,int b){return a * b;}int divObject::operation_function(int a,int b){return a / b;}int tochObject::operation_function(int a,int b){return a % b;}basicObject * ArithOperatorFactory::CreateArithOperator(const char chsrc){basicObject *obj;switch(chsrc){case '+':obj = new addObject;break;case '-':obj = new subObject;break;case '*':obj = new mulObject;break;case '/':obj = new divObject;break;case '%':obj = new tochObject;break;default:obj = NULL;break;}return obj;}main.cpp#include "classFile.h"#include <iostream>#include <stdlib.h>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ArithOperatorFactory * factoryObj = new ArithOperatorFactory;basicObject * addObj = factoryObj->CreateArithOperator('+');if (addObj == NULL){return 0;}int k = addObj->operation_function(20, 30);cout << "k = " << k << endl;system("pause");return 0;}
- 设计模式 - 简单工厂模式(C++)
- 设计模式之简单工厂,工厂方法模式(c++)
- C#--简单工厂设计模式
- C#--设计模式之简单工厂模式
- 设计模式之简单工厂模式(使用C++)
- 设计模式——简单工厂模式(C++)
- 设计模式(简单工厂)
- 设计模式 - 工厂模式(简单,工厂方法,抽象工厂)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- 设计模式指工厂模式(简单工厂,抽象工厂)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- Java设计模式:工厂模式(一)简单工厂模式
- 设计模式学习之工厂模式(简单工厂模式)
- Java设计模式-工厂模式(1)简单工厂模式
- 设计模式(二)工厂模式:简单工厂模式
- 设计模式(2)-简单工厂模式
- 设计模式(一):简单工厂模式
- 设计模式(简单工厂模式)
- 设置搜索用户和组的限制
- 哎,爱
- g++的使用
- 有关char指针的文章一篇
- 自增主键和GUID主键
- 设计模式 - 简单工厂模式(C++)
- 表单提交编码不同如何解决
- Data.Structures.For.Game.Programmers.PART2.Basics.5.Multi_Dimensional_Arrays
- .NET实现之(自己动手写高内聚插件系统)
- iPhone开发笔记(14)UIScrollView的边界处理问题
- web2.0主题中的web内容查看器
- PHP路径引用学习
- 项目升级到struts2.3.4 找不到 org.apache.commons.lang.xwork.StringUtils
- hash算法 (hashmap 实现原理)