C++设计模式之策略模式

应用场景:定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户。
适用性:适合类中的成员以方法为主,算法经常变动。
缺陷:客户端要做出判断。

策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。
C++设计模式之策略模式_第1张图片

//策略基类
class COperation {
public:
	int m_nFirst;
	int m_nSecond;
	virtual double GetResult() {
		double dResult = 0;
		return dResult;
	}
};
//策略具体类—加法类
class AddOperation : public COperation {
public:
	AddOperation(int a,int b) {
		m_nFirst = a;
		m_nSecond =}
	virtual double GetResult() {
		return m_nFirst + m_nSecond;
	}
};
class Context {
private:
	COperation* op;
public:
	Context(COperation* temp) {
		op = temp;
	}
	double GetResult() {
		return op­>GetResult();
	}
};
//客户端
int main()
{
	int a,char c;
	cin >> a >> b;
	cout << "请输入运算符:"
	cin >>switch(c) {
	case '+':
		Context *context = new Context(new AddOperation(a,b));
		cout << context­>GetResult() << endl;
		break;
	default:
		break;
	}
	return 0;
}

你可能感兴趣的:(C++设计模式)