LANGUAGE/DESIGN PATTERN

[DESIGN PATTERN] STRATEGY PATTERN - 전략 패턴

진심스테이크 2019. 7. 15. 09:46

 

Strategy Pattern : 같은 문제를 해결하는 여러 알고리즘을 클래스별로 캡슐화하여 사용

- 같은 문제를 다른 알고리즘으로 해결할 수 있게 하는 패턴

ex) 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을 때

- '주입' 개념으로 들어가면 전략 패턴으로 간주

 

사용 이유

 

장점

- 동일 계열 알고리즘을 생성할 수 있음

  -> 같은 함수의 중복을 제거

- 객체 행위에 대한 서브 클래스를 이용하지 않음

  -> 상위 클래스로 Interface를 정의하면, 본 소스는 건드릴 필요가 없음

- 조건문을 사용하지 않음

- 구현을 선택할 수 있음

 

단점

- 사용하기 전에 클래스를 알아야 함

- 메모리를 많이 사용하게 됨

 

Strategy : 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결

 

  • Strategy (전략) : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시
  • Concrete Strategy (전략 구현체) : 전략 패턴에서 명시한 알고리즘을 실제로 구현한 클래스
  • Context (사용자) : 전략 패턴을 이용하는 역할을 수행