首页 > 其他 > 详细

工厂模式

时间:2014-08-01 19:55:32      阅读:367      评论:0      收藏:0      [点我收藏+]

通过大话设计模式一书学习后,c++编写的设计模式代码:

// OOTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "Operation.h"
#include "OperationFactory.h"

int _tmain(int argc, _TCHAR* argv[])
{
	double resurt=0;	
	OperationFactory factory;
	Operation *father = factory.createFactory('+');		
	father->setAB(2,3);
	resurt = father->getResurt();	
	cout << "add" << resurt << endl;

	system("pause");
	return 0;
}
---------------工厂类-----------
#pragma once
#include "iostream"
using namespace std;

#include "Operation.h"
#include "OperationAdd.h"
#include "OperationSub.h"
class OperationFactory
{
public:
	OperationFactory(void);
	~OperationFactory(void);
	

	Operation * createFactory(char operation);
};

#include "StdAfx.h"
#include "OperationFactory.h"

OperationFactory::OperationFactory(void)
{
}

OperationFactory::~OperationFactory(void)
{
}

Operation * OperationFactory::createFactory(char operation)
{
	Operation * oper = NULL ;
	switch(operation)
	{
	case '+':
			oper = new OperationAdd();
		break;
	case '-':
			oper = new OperationSub();
			break;
	default:
			cout << "err" << endl;
	}
	return oper;
}

---------------父类-----------
#pragma once

class Operation
{
public:
	Operation(void);
	virtual ~Operation(void);
	virtual double getResurt();
	void setAB(double numA, double numB);
public:
	double mNumberA;
	double mNumberB;
};

#include "StdAfx.h"
#include "Operation.h"

Operation::Operation(void)
{
}

Operation::~Operation(void)
{
}

double Operation::getResurt()
{
	return 0;
}
void Operation::setAB(double numA, double numB)
{
	this->mNumberA = numA;
	this->mNumberB = numB;
}

---------------ADD类-----------
#pragma once
#include "operation.h"

class OperationAdd :
	public Operation
{
public:
	OperationAdd(void);
	~OperationAdd(void);

	double getResurt();
	double getA();
};

#include "StdAfx.h"
#include "OperationAdd.h"

OperationAdd::OperationAdd(void)
{
}

OperationAdd::~OperationAdd(void)
{
}

double OperationAdd::getResurt()
{
	return mNumberA+mNumberB;
}
double OperationAdd::getA()
{
	return mNumberA;
}

---------------SUB类-----------
#pragma once
#include "operation.h"

class OperationSub :
	public Operation
{
public:
	OperationSub(void);
	~OperationSub(void);

	double getResurt();
};

#include "StdAfx.h"
#include "OperationSub.h"

OperationSub::OperationSub(void)
{
}

OperationSub::~OperationSub(void)
{
}

double OperationSub::getResurt()
{
	return mNumberA-mNumberB;
}

工厂模式,布布扣,bubuko.com

工厂模式

原文:http://blog.csdn.net/leeboy_wang/article/details/38338657

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!