디자인 패턴/행위 패턴

Strategy 패턴

언린이 2021. 11. 5. 10:08

Strategy 패턴은 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 변경할 수 있도록 해주는 패턴입니다.

같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있도록 해줍니다.

 

 

구조

  • Strategy
    • 외부에서 동일한 방식으로 알고리즘을 호출하기 위한 메서드를 명시하는 인터페이스 클래스입니다.
  • ConcreteStrategy
    • Strategy 클래스에서 명시한 알고리즘을 실제로 구현한 클래스입니다.
  • Context
    • Strategy 클래스를 사용하는 역할을 수행합니다.
    • 필요에 따라 동적으로 구체적인 전략을 변경할 수 있도록 setter 메서드를 제공합니다.

 

 

활용 상황

  • 구현된 알고리즘은 다르지만 동일한 목적을 지닌 클래스들이 존재할때 유용합니다.
  • 사용하는 시점에 따라서 알고리즘을 변경해야 할때 유용합니다.

 

 

Strategy 패턴의 장단점

  • 장점
    • 알고리즘마다 사용되는 코드 중복을 방지할 수 있습니다.
    • 알고리즘을 변경하고 싶을때 쉽게 변경할 수 있습니다.
    • 확장성이 용이하여 다양한 알고리즘을 쉽게 추가할 수 있습니다.
  • 단점
    • 알고리즘이 늘어날수록 클래스도 무한정 늘어납니다.
    • 클라이언트가 사용할 알고리즘을 직접 결정해야 하기 때문에 모든 알고리즘에 대한 성능과 효율을 알고 있어야 합니다.

'디자인 패턴 > 행위 패턴' 카테고리의 다른 글

Mediator 패턴  (0) 2021.11.12
Template Method 패턴  (0) 2021.11.09
Interpreter 패턴  (0) 2021.11.02
Chain of responsibility 패턴  (0) 2021.10.29
Iterator 패턴  (0) 2021.10.26