C++设计模式编程中简单工厂与工厂方法模式的实例对比设计模式编程中简单工厂与工厂方法模式的实例对比
主要介绍了C++设计模式编程中简单工厂与工厂方法模式的实例对比,文中最后对两种模式的优缺点总结也比较
详细,需要的朋友可以参考下
简单工厂模式实例简单工厂模式实例
题目:实现计算器的输入2个数和运算符,得到结果
工程结构:
(1)头文件
COperationFactory.h(运算符工厂类)
(2)源文件
SimpleFactory.cpp(客户端应用类,主函数所在)
(3)运算类
COperation.cpp(运算符基类)
COperation.h
COperationAdd.h(加法运算符子类,继承于COperation)
COperationDiv.h (除法运算符子类,继承于COperation)
COperationMul.h (乘法运算符子类,继承于COperation)
COperationSub.h(减法运算符子类,继承于COperation)
============= 代码实现部分 =============
COperationFactory.h(运算符工厂类)
/************************************************************************/
/* 运算符工厂类 */
/************************************************************************/
#ifndef _OPERATION_FACTORY_H_
#define _OPERATION_FACTORY_H_
#include "stdafx.h"
#include "COperation.h"
#include "COperationAdd.h"
#include "COperationSub.h"
#include "COperationMul.h"
#include "COperationDiv.h"
#include "COperationFactory.h"
class COperationFactory
{
public:
COperationFactory(){};
~COperationFactory(){};
// 根据入参的不同,创建其对应的运算符类指针。就像是个工厂,创建用户指定的运算符类指针
static COperation* NewOperation(const string& strOperate)
{
// 入参合法性判断,防止后面的strOperate[0]发生越界访问
if (strOperate.size() != 1)
{
return NULL;
}
COperation* pOperation = NULL;
switch (strOperate[0])
{
case '+':
pOperation = new COperationAdd();
break;
case '-':
pOperation = new COperationSub();
break;
case '*':
pOperation = new COperationMul();
break;
case '/':
pOperation = new COperationDiv();
break;
default: