1.主要思想:例如针对不同的算法,创建不同的类。
#include <iostream> using namespace std; // The abstract strategy class Strategy { public: virtual void AlgorithmInterface() = 0; }; class ConcreteStrategyA : public Strategy { public: void AlgorithmInterface() { cout<<"I am from ConcreteStrategyA."<<endl; } }; class ConcreteStrategyB : public Strategy { public: void AlgorithmInterface() { cout<<"I am from ConcreteStrategyB."<<endl; } }; class ConcreteStrategyC : public Strategy { public: void AlgorithmInterface() { cout<<"I am from ConcreteStrategyC."<<endl; } }; class Context { public: Context(Strategy *pStrategyArg) : pStrategy(pStrategyArg) { } void ContextInterface() { pStrategy->AlgorithmInterface(); } private: Strategy *pStrategy; }; int main() { // Create the Strategy Strategy *pStrategyA = new ConcreteStrategyA; Strategy *pStrategyB = new ConcreteStrategyB; Strategy *pStrategyC = new ConcreteStrategyC; Context *pContextA = new Context(pStrategyA); Context *pContextB = new Context(pStrategyB); Context *pContextC = new Context(pStrategyC); pContextA->ContextInterface(); pContextB->ContextInterface(); pContextC->ContextInterface(); if (pStrategyA) delete pStrategyA; if (pStrategyB) delete pStrategyB; if (pStrategyC) delete pStrategyC; if (pContextA) delete pContextA; if (pContextB) delete pContextB; if (pContextC) delete pContextC; }
原文:https://www.cnblogs.com/mcy0808/p/10832557.html