策略与工厂结合
优点:客户端只需访问 Context 类,而不用知道其它任何类信息,实现了低耦合。
话不多说:直接上代码。
#pragma once
class COperation
{
public:
int m_nFirst;
int m_nSecond;
virtual double GetResult()
{
double dResult = 0;
return dResult;
}
};
#pragma once
#include "COperation.h"
class AddOperation :
public COperation
{
public:
AddOperation(int a, int b)
{
m_nFirst = a;
m_nSecond = b;
}
virtual double GetResult()
{
return m_nFirst + m_nSecond;
}
};
#pragma once
#include "COperation.h"
#include"AddOperation.h"
class Context
{
private:
COperation *Oper;
public:
Context(char c ,int a,int b)
{
switch (c)
{
case '+':
Oper = new AddOperation(a, b);
break;
default:
break;
}
}
double GetResult()
{
return Oper->GetResult();
}
};
#include<iostream>
#include"Context.h"
using namespace std;
int main()
{
int a, b;
char c;
cin >> a >> b;
cout << "请输入运算符:";
cin >> c;
Context *context = new Context('+', a, b);
cout << context->GetResult() << endl;
return 0;
}