LANGUAGE/DESIGN PATTERN
[DESIGN PATTERN] STRATEGY PATTERN - 전략 패턴
진심스테이크
2019. 7. 15. 09:46
Strategy Pattern : 같은 문제를 해결하는 여러 알고리즘을 클래스별로 캡슐화하여 사용
- 같은 문제를 다른 알고리즘으로 해결할 수 있게 하는 패턴
ex) 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을 때
- '주입' 개념으로 들어가면 전략 패턴으로 간주
사용 이유 :
장점
- 동일 계열 알고리즘을 생성할 수 있음
-> 같은 함수의 중복을 제거
- 객체 행위에 대한 서브 클래스를 이용하지 않음
-> 상위 클래스로 Interface를 정의하면, 본 소스는 건드릴 필요가 없음
- 조건문을 사용하지 않음
- 구현을 선택할 수 있음
단점
- 사용하기 전에 클래스를 알아야 함
- 메모리를 많이 사용하게 됨
Strategy : 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결
- Strategy (전략) : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시
- Concrete Strategy (전략 구현체) : 전략 패턴에서 명시한 알고리즘을 실제로 구현한 클래스
- Context (사용자) : 전략 패턴을 이용하는 역할을 수행