Unity에서 FPS 장르의 게임을 개발하려고 한다고 하자. FPS 장르에서의 플레이어는 기본적으로 주무기, 보조무기, 단검, 수류탄 등을 소지할 수 있다.
이 소지한 장비들을 이용하여 각각의 개성있는 공격을 행할 수 있는데, 여기서 모두 공격이라는 점을 인터페이스로 상속하여 각각의 클래스를 구현할 수 있다.
그러면 플레이어 클라이언트는 인터페이스만을 이용하여 공격을 교체할 수 있게 되고, 내부적으로 어떻게 공격이 행해지는지 알 필요가 없게 된다.
이것이 Unity에서 사용되는 전략 패턴의 예시다. 전략 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 패턴이다.
SOLID 원칙 중 OCP를 준수한다.
전략 패턴을 적용하면 컨텍스트 코드의 변경없이 새로운 전략을 쉽게 추가할 수 있다. 이는 else if가 추가되는 것보다 가독성이 높다.
전략을 캡슐화한다.
전략을 캡슐화함으로 전략의 추가, 수정이 있을 경우 유연하게 대처할 수 있고, 수정이 최소화되므로 확장성이 높아지며, 재활용성이 좋다.
테스트가 용이하다.
각각의 전략들을 독립적으로 테스트할 수 있기 때문에 개발에 용이하다.