您的位置:首页 > 其它

设计模式(1)--简单工厂模式

2016-10-31 23:59 363 查看
//ver1
class Operation
{
public:
static double GetResult(double A, double B, char operate)
{
double result = 0;
switch(operate)
{
case '+':
result = A + B;
break;
case '-':
result = A - B;
break;
default:
break;
}
return result;
}
};

void main1()
{
double A = 1.1;
double B = 2.2;
char oper = '+';
double result = Operation::GetResult(A, B, oper);
}


//ver2
class Operation
{
public:
Operation(){}
~Operation(){}
protected:
double _NumberA;
double _NumberB;
public:
void SetNumberA(double A)
{
_NumberA = A;
}
double GetNumberA()
{
return _NumberA;
}
void SetNumberB(double B)
{
_NumberB = B;
}
double GetNumberB()
{
return _NumberB;
}

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

class OperationAdd : public Operation
{
public:
virtual double GetResult()
{
double result = _NumberA + _NumberB;
return result;
}
};

class OperationSub : public Operation
{
public:
virtual double GetResult()
{
double result = _NumberA - _NumberB;
return result;
}
};

//工厂
class OperationFactory
{
public:
static Operation CreateOperate(char operate)
{
Operation *oper = NULL;
switch(operate)
{
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationSub();
break;
default:
break;
}
return *oper;
}
};

void main2()
{
Operation oper;
oper = OperationFactory::CreateOperate('+');
oper.SetNumberA(1.1);
oper.SetNumberB(2.2);
double result = oper.GetResult();
}


  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: