现在的位置: 首页 > 综合 > 正文

简单工厂

2013年10月23日 ⁄ 综合 ⁄ 共 1555字 ⁄ 字号 评论关闭
#include <iostream>
using namespace std;

class Operationz
{
public :
	double getnumberA()
	{
		return numberA;
	}
	void setnumberA(double value)
	{
		numberA = value;
	}
	double getnumberB()
	{
		return numberB;
	}
	void setnumberB(double value)
	{
		numberB = value;
	}

	virtual double getResult()
	{
		double result = 0;
		return result;
	}

protected:
	double numberA , numberB ;
};

class OperationzAdd : public Operationz
{
public :
	double getResult()
	{
		double result = 0;
		result = numberA + numberB;
		return result;
	}
};

class OperationzSub : public Operationz
{
public :
	double getResult()
	{
		double result = 0;
		result = numberA - numberB;
		return result;
	}
};

class OperationzMul : public Operationz
{
public :
	double getResult()
	{
		double result = 0;
		result = numberA * numberB;
		return result;
	}
};

class OperationzDiv : public Operationz
{
public :
	double getResult()
	{
		double result = 0;
		if(numberB == 0)
		{
			cout<< "除数不能为0" <<endl;
			exit(1);
		}
		result = numberA / numberB;
		return result;
	}
};
class OperationzFactory
{
public :
	static Operationz* createOperationz(char opera)
	{
		Operationz* oper;
		switch(opera)
		{
		case '+':
			oper = new OperationzAdd();
			break;
		case '-':
			oper = new OperationzSub();
			break;
		case '*':
			oper = new OperationzMul();
			break;
		case '/':
			oper = new OperationzDiv();
			break;
		default:
			cout << "qing chuxin shuru" <<endl;
		}
		return oper;
	}
};

int main()
{
	Operationz *oper;
	oper = OperationzFactory::createOperationz('+');
	oper->setnumberA(10);
	oper->setnumberB(2);
	cout << oper->getResult() <<endl;
	return 0;
}

大话设计模式代码c++实现

主要是c++和c#语法的不同。

在这次实验中,代码改造过程中发现:

1.  c++中类前面不用public等修饰

2.  c++中继承要指定继承方式,如class OperationzDiv : public Operationz,没有写publc则当作私有继承。

3.  c++中new一个类返回的是指针,与c#,java不同,导致的结果是很多Operationz *oper形式的出现,也导致很多->的出现

4. 父类的成员变量要用protected修饰,否则子类无法继承。

5. c++不能对类的成员变量赋初值,除非是static

6. switch语句不能接收string对象

抱歉!评论已关闭.