定義算法家族,分別封裝起來,讓它們可以相互替換,讓算法變化不會影響到用戶。策略模式與簡單工廠模式基本相同,但簡單工廠只能解決對象創建問題,對於經常變動的算法應使用策略模式。
代碼實現:
#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; }