책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.
1. Strategy 인터페이스(API)
2. 구체 전략 클래스
3. Strategy를 사용하는 곳 (Player)
Player에서 어떤 Strategy 전략 클래스를 이용해 게임을 한다고 가정한다.
Player와 같이 Strategy를 사용하는 곳에서 구체 클래스가 아니라 인터페이스를 이용해 코드를 짜면 Strategy에 뭐가 들어오든지 간에 '어떤' 전략을 사용할 수 있는 것이다. (Player는 넓은 시야에서 프로그램을 어떻게 전개시킬지 정한다.) 다시 말해 Main 클래스에서 new Player(new RandomStrategy())와 같이 Playe 객체를 생성할 때 매개변수로 내가 Strategy 인터페이스를 상속하는 새로운 전략 클래스를 넣어주면 쉽게 알고리즘(전략)을 바꿀 수 있는 것이다.
- 알고리즘 부분을 다른 부분과 분리
- 알고리즘이 있는 인터페이스(API) 부분만 규정해 두고 프로그램에서 위임을 통해 알고리즘을 이용
- 위임이라는 약한 결합 사용
알고리즘 전환, 특히 동적 전환이 가능해짐(= 실행 중 알고리즘 교체도 가능)
'문제 및 이론 정리 > 디자인패턴' 카테고리의 다른 글
[디자인패턴] Decorator - 장식틀과 내용물을 동일시한다 (0) | 2025.02.21 |
---|---|
[디자인패턴] Visitor - 데이터 구조를 돌아다니면서 처리한다 (0) | 2025.02.18 |
[디자인패턴] Iterator - 처리를 반복한다 (1) | 2025.02.18 |
[디자인패턴] Bridge - 기능 계층과 구현 계층을 분리한다 (2) | 2025.02.04 |
[디자인패턴] Template Method - 상속 (0) | 2025.01.21 |