Strategy Pattern 드론 구현 - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki

전략 패턴이란

Strategy Pattern 객체가 어떤 동작을 사용할 것인지 런타임 시 결정하도록 연기

  • 전략이라는 개별 클래스에 캡슐화된 일련의 행동 정의
  • 전략 간 변경 가능하며, 동작을 변경하기 위해 대상 컨텍스트 객체에 할당
    image
    • 컨텍스트context
      • 다양하고 구체적인 전략 클래스를 사용
      • 전략 인터페이스로 상호작용하는 클래스
    • 전략 인터페이스
      • 모든 구체적인 전략 클래스에서 사용
      • 컨텍스트 클래스가 전략을 실행하는 데 사용할 수 있는 메서드 노출
    • 구체적인 전략 클래스(전략strategy) 컨텍스트 객체에 적용할 수 있는 알고리즘 및 동작 변형을 런타임에 구체적으로 구현

전략패턴 런타임에 동작을 선택하고 객체에 적용
상태패턴 객체의 내부 상태가 변경될 때 동작 변경

1. 장·단점

  • 장점
    • 캡슐화
      • 개별 클래스에 알고리즘의 변형을 캡슐화 하도록 강제
      • 코트 구조화 상태에서의 긴 조건문 사용을 방지
    • 런타임
      • 런타임 시 객체가 사용하는 알고리즘을 교환할 수 있는 메커니즘 구현
      • 객체를 동적으로 만들고 확장할 수 있도록 지원
  • 단점
    • 클라이언트
      • 전략을 선택하기 위해 구현한 알고리즘의 변형과 개별 전략을 알아야 함
      • 객체가 살아있는 동안 예상대로 동작하는 지 확인 필요
    • 혼란
      • 전략 패턴상태 패턴의 구조가 유사하지만 의도가 다르기에, 선택에 어려움 有
      • 팀 프로젝트에서 일부 동료가 어떤 패턴을 선택할지 이해 못할 가능성 有

정기적으로 동료와 아키텍쳐, 패턴, 모범 사례에 대한 협의가 중요

2. 사용시기

  • 적 캐릭터 행동 구현 시 대부분 상태 패턴 혹은 유한 상태 패턴 사용
  • 다음의 특수한 경우 전략 패턴 사용
    • 동일한 동작이 다양하게 변형되는 엔티티 + 개별 클래스에서 캡슐화
    • 런타임 시, 현재 (객체의) 내부 상태와 무관하게 특정 동작 변형을 엔티티에 할당
    • 런타임 시, 정의된 선택 기준에 따라 특정 작업을 수행하도록 엔티티에 행동 적용

전략 패턴 구현 예제

1. 구현 UML

image

2. 구현 시 고려사항

  • 플레이어와 상호작용하지 않고 정해진 동작 수행
  • 드론의 공격 전술
    • 보빙bobbing 기동전술maneuver 레이저 빔을 소면서 상하로 기동
    • 위빙weaving 기동전술maneuver 사격 중 좌우로 기동
    • 폴백fallback 기동전술maneuver 사격 중 뒤로 기동
  • 단일 무기 45도 각도로 지면을 향해 발사하는 전면 레이저 빔