设计模式 - 简单工厂模式(C++)
2012-07-27 10:30
337 查看
一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。
1.静态工厂方法统一管理对象的创建。
静态工厂方法通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。
2.静态工厂方法推迟了产品的实例化。
通过XML配置文件就能改变具体要创建的产品实例,修改为其它的产品实例,代码不须重新编译。
classFile.h
#pragma once class 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++实现)——简单工厂模式(Simple Factory Pattern)
- C++设计模式之1-工厂模式(简单工厂模式-工厂方法模式-抽象工厂模式)
- C++设计模式之简单工厂模式
- c++设计模式:简单工厂模式(Simple Factory Pattern)
- C++实现设计模式之 — 简单工厂模式
- 设计模式之C++实现(一)---简单工厂模式(Simple Factory)
- 批注:C++设计模式——简单工厂模式:归类
- C++设计模式——简单工厂模式
- 设计模式:简单工厂模式(C++)【看不懂算我输】
- C++设计模式之简单工厂模式
- C++设计模式(3):简单工厂模式
- 设计模式-简单工厂模式 C++实现
- C++设计模式——简单工厂模式
- 设计模式之简单工厂模式(C++实现)
- C++设计模式——简单工厂模式
- 通过例子学设计模式之--简单工厂模式以及使用场景说明(C++实现)
- 简单工厂模式的C++实现——设计模式学习(1)