문제 및 이론 정리/디자인패턴

[디자인패턴] Strategy - 스위치를 전환하듯 알고리즘을 바꾼다

hail2y 2025. 2. 3. 14:34

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.

 

1. Strategy 인터페이스(API)

2. 구체 전략 클래스

3. Strategy를 사용하는 곳 (Player)

 

Player에서 어떤 Strategy 전략 클래스를 이용해 게임을 한다고 가정한다. 

 

Player와 같이 Strategy를 사용하는 곳에서 구체 클래스가 아니라 인터페이스를 이용해 코드를 짜면 Strategy에 뭐가 들어오든지 간에 '어떤' 전략을 사용할 수 있는 것이다. (Player는 넓은 시야에서 프로그램을 어떻게 전개시킬지 정한다.) 다시 말해 Main 클래스에서 new Player(new RandomStrategy())와 같이 Playe 객체를 생성할 때 매개변수로 내가 Strategy 인터페이스를 상속하는 새로운 전략 클래스를 넣어주면 쉽게 알고리즘(전략)을 바꿀 수 있는 것이다. 

 

  •  알고리즘 부분을 다른 부분과 분리
  • 알고리즘이 있는 인터페이스(API) 부분만 규정해 두고 프로그램에서 위임을 통해 알고리즘을 이용
  • 위임이라는 약한 결합 사용

 

 알고리즘 전환, 특히 동적 전환이 가능해짐(= 실행 중 알고리즘 교체도 가능)