Strategy Pattern 드론 구현 - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki
전략 패턴이란
Strategy Pattern 객체가 어떤 동작을 사용할 것인지 런타임 시 결정하도록 연기
- 전략이라는 개별 클래스에 캡슐화된 일련의 행동 정의
- 전략 간 변경 가능하며, 동작을 변경하기 위해 대상 컨텍스트 객체에 할당
- 컨텍스트context
- 다양하고 구체적인 전략 클래스를 사용
- 전략 인터페이스로 상호작용하는 클래스
- 전략 인터페이스
- 모든 구체적인 전략 클래스에서 사용
- 컨텍스트 클래스가 전략을 실행하는 데 사용할 수 있는 메서드 노출
- 구체적인 전략 클래스(전략strategy) 컨텍스트 객체에 적용할 수 있는 알고리즘 및 동작 변형을 런타임에 구체적으로 구현
- 컨텍스트context
전략패턴 런타임에 동작을 선택하고 객체에 적용
상태패턴 객체의 내부 상태가 변경될 때 동작 변경
1. 장·단점
- 장점
- 캡슐화
- 개별 클래스에 알고리즘의 변형을 캡슐화 하도록 강제
- 코트 구조화 상태에서의 긴 조건문 사용을 방지
- 런타임
- 런타임 시 객체가 사용하는 알고리즘을 교환할 수 있는 메커니즘 구현
- 객체를 동적으로 만들고 확장할 수 있도록 지원
- 캡슐화
- 단점
- 클라이언트
- 전략을 선택하기 위해 구현한 알고리즘의 변형과 개별 전략을 알아야 함
- 객체가 살아있는 동안 예상대로 동작하는 지 확인 필요
- 혼란
전략 패턴
과상태 패턴
의 구조가 유사하지만 의도가 다르기에, 선택에 어려움 有- 팀 프로젝트에서 일부 동료가 어떤 패턴을 선택할지 이해 못할 가능성 有
- 클라이언트
정기적으로 동료와 아키텍쳐, 패턴, 모범 사례에 대한 협의가 중요
2. 사용시기
- 적 캐릭터 행동 구현 시 대부분
상태 패턴
혹은유한 상태 패턴
사용 - 다음의 특수한 경우
전략 패턴
사용- 동일한 동작이 다양하게 변형되는 엔티티 + 개별 클래스에서 캡슐화
- 런타임 시, 현재 (객체의) 내부 상태와 무관하게 특정 동작 변형을 엔티티에 할당
- 런타임 시, 정의된 선택 기준에 따라 특정 작업을 수행하도록 엔티티에 행동 적용
전략 패턴 구현 예제
1. 구현 UML
2. 구현 시 고려사항
- 플레이어와 상호작용하지 않고 정해진 동작 수행
- 드론의 공격 전술
- 보빙bobbing 기동전술maneuver 레이저 빔을 소면서 상하로 기동
- 위빙weaving 기동전술maneuver 사격 중 좌우로 기동
- 폴백fallback 기동전술maneuver 사격 중 뒤로 기동
- 단일 무기 45도 각도로 지면을 향해 발사하는 전면 레이저 빔