[디자인 패턴] 전략 패턴 (Strategy Pattern)
디자인 패턴- 개념
특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화 하여 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하도록 한다
즉 동적으로 알고리즘을 교체 할 수 있는 구조
하나의 결과를 만드는 목적은 동일하지만, 그 목적을 달성할 수 있는 방법이 여러가지가 존재할 경우 사용
- 구현
Strategy는 제공하는 알고리즘들의 공통의 인터페이스를 정의합니다
그리고 각 ConcreteStrategy에서 이 인터페이스를 바탕으로 실제 알고리즘을 구현합니다
Context는 Strategy객체에 대한 참조자를 관리하고, 실제로는 Strategy 서브클래스의 인스턴스를 가지고 있음으로써 구체화 합니다. 또한 Strategy 객체가 자료에 접근하는데 필요한 인터페이스를 정의합니다
사용자는 필요한 알고리즘에 해당하는 ConcreteStrategy 객체를 생성하여 이를 Context 클래스에 보냅니다
그리고 어떤 ConcreteStrategy 객체를 생성했던지 상관없이, Context에 정의된 인터페이스를 통해 동일하게 사용이 가능합니다
- 관련 패턴
플라이급 패턴 (Flyweight Pattern)
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 복합체 패턴 (Composite Pattern) (0) | 2018.04.23 |
---|---|
[디자인 패턴] 플라이급 패턴 (Flyweight Pattern) (0) | 2018.04.23 |
[디자인 패턴] 장식자 패턴 (Decorator Pattern) (0) | 2018.04.01 |
[디자인 패턴] 적응자 패턴 (Adapter Pattern) (0) | 2018.03.26 |
[디자인 패턴] 퍼사드 패턴 (Facade Pattern) (0) | 2018.03.26 |