전략 패턴은 실행(런타임) 중에 다형성을 기반으로 알고리즘 전략을 선택하여, 동적으로 전략을 수정할 수 있는 행위 디자인 패턴이다.
어떤 행동을 수행하는 알고리즘이 여러개 있을때, 동작을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는 패턴이다.
전략 패턴은 OOP의 집합체이며, 아래와 같이 정의한다.
전략 알고리즘이 여러가지 일때
런타임에 동적으로 전략이 교체 되어야 할때
동일한 계열 알고리즘의 변경 간에 if문이 많이 발생하는 경우
알고리즘의 세부 구현을 노출하고 싶지 않을때(캡슐화)
→ 클라이언트는 인터페이스만 의존하고 메서드를 단순히 호출