STRATEGY 전략 패턴
- 알고리즘을 교체가능 하게 하는 패턴.
- 알고리즘의 인터페이스를 정의하고, 각각의 클래스별로 캡슐화 한 후 사용.
- 결과는 같으나 결과를 만드는 방법이 여러개인 경우 사용.
//Strategy Interface class class Strategy{ public: virtual void AlgorithmInterface() = 0; }; //Strategy Algorithms class ConcreteStrategyA : public Strategy{ public: void AlgorithmInterface() override { cout<<"Call A"<<endl; }; }; class ConcreteStrategyB : public Strategy{ public: void AlgorithmInterface() override { cout<<"Call B"<<endl; }; }; class ConcreteStrategyC : public Strategy{ public: void AlgorithmInterface() override { cout<<"Call C"<<endl; }; }; //Context class Context{ public: Context() : _Strategy(0) {} ~Context() {if(_Strategy) delete _Strategy;} void ChangeStrategy(Strategy* pStrategy){ if(_Strategy) delete _Strategy; _Strategy= pStrategy; } void ContextInerface() { _Strategy->AlgorithmInterface(); } private: Strategy* _Strategy; }; //main int main(){ Context* _Context = new Context(); _Context ->ChangeStrategy(new ConcreteStrategyA()); _Context ->ContextInerface(); _Context ->ChangeStrategy(new ConcreteStrategyB()); _Context ->ContextInerface(); _Context ->ChangeStrategy(new ConcreteStrategyC()); _Context ->ContextInerface(); delete _Context ; return 0; }
'Study > Design Patterns c++' 카테고리의 다른 글
Design Patterns PROXY 프록시 패턴 C++ (0) | 2018.07.02 |
---|---|
Design Patterns FLYWEIGHT 플라이급 패턴 패턴 C++ (0) | 2018.07.02 |
Design Patterns FACADE 퍼사드 패턴 C++ (0) | 2018.06.19 |
Design Patterns DECORATOR 장식자 패턴 C++ (0) | 2018.06.19 |
Design Patterns TEMPLATE METHOD 템플릿 메소드 패턴 C++ (0) | 2018.06.18 |