class Strategy { public: virtual void DoSomething() = 0; };
class MethodA : public Strategy { public: void DoSomething() { cout<<"this is MethodA."<<endl; } };
class MethodB : public Strategy { public: void DoSomething() { cout<<"this is MethodB."<<endl; } };
class MethodC : public Strategy { public: void DoSomething() { cout<<"this is MethodC."<<endl; } };
class Context { public: Context(Strategy *pStrategy) : m_pStrategy(pStrategy) { } void Execute() { m_pStrategy->DoSomething(); } private: Strategy *m_pStrategy; };
int main() { Strategy *pStrategy = new MethodA; Context *pContext = new Context(pStrategy); pContext->Execute(); rerurn 0; }
|