TIL

2023/12/28 TIL

미역제자 2023. 12. 29. 10:11


디자인패턴 - 전략 패턴(Strategy Pattern)

  • 특정한 계열의 알고리즘들을 정의하고
  • 각 알고리즘을 캡슐화하며
  • 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다.

전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다.

전략 디자인 패턴은 유연하고 재사용 가능한 객체 지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법, 즉 객체는 구현, 변경, 테스트, 재사용이 쉬워야 한다는 것을 기술하는, 잘 알려진 23가지 GoF 디자인 패턴들 중 하나이다.

 

전략패턴의 흐름

  • 클래스 구성
    • 전략(추상화된 알고리즘)
    • 전략 알고리즘 A (전략 알고리즘 자식)
    • 전략 알고리즘 B (전략 알고리즘 자식)
    • 컨택스트 (전략 등록/실행)
  • 클래스 흐름
    • 클라이언트(전략 교체/ 전략 실행한 결과를 얻음)
      1. 컨텍스트 설정
      2. 전랙 설정
      3. 전략 실행
      4. 다른 전략 설정
      5. 다른 전략 시행

사용 시기

  • 알고리즘 코드가 노출되어서는 안되는 데이터에 액세스 하거나 데이터를 활용할 때(캡슐화)
  • 알고리즘의 동작이 런타임에서 실시간으로 교체되어야 할때
  • 여러가지 버전 혹은 변형이 필요할 때