C++策略模式

定義算法家族,分別封裝起來,讓它們可以相互替換,讓算法變化不會影響到用戶。策略模式與簡單工廠模式基本相同,但簡單工廠只能解決對象創建問題,對於經常變動的算法應使用策略模式。

代碼實現:

#include<iostream>
using namespace std;
//策略基類
class COperation
{
public:
	int m_nFirst;
	int m_nSecond;
	virtual double GerResult()
	{
		double dResult=0;
		return dResult;
	}
};
//策略具體類-加法類
class AddOperation:public COperation
{
public:
	AddOperation(int a,int b)
	{
		m_nFirst=a;
		m_nSecond=b;
	}
	virtual double GetResult()
	{
		return m_nFirst+m_nSecond;
	}
};

class Context
{
private:
	COperation* op;
public:
	Context(char cType)
	{
		switch(cType)
		{
			case'+':
				op=new AddOperation(3,8);
				break;
			default:
				op=new AddOperation();
				break;
		}
	}
	double GetResult()
	{
		return op->GerResult();
	}
};
//客戶端
int main()
{
	int a,b;
	char c;
	cout<<"輸入操作數吧,中間空格間隔:"<<endl;
	cin>>a>>b;
	Context* test=new Context('+');
	cout<<test->GerResult()<<endl;
	
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章