객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔줌으로써 행위를 유연하게 확장하는 디자인 패턴이다.
각 객체의 행위가 정의 되어 있을 때 시스템의 확장으로 특정 행위를 여러 클래스에서 다른 동작으로 사용하고자 할 때 OCP가 깨지게 되고 클래스가 추가될 때 마다 특정 행위에 대한 메서드의 중복이 발생되어 수정해야 한다. 따라서 이를 해결하고자 할 때 필요하다.
특정 행위에 대한 전략을 정의할 인터페이스를 설계하고, 이 인터페이스를 상속받는 특정 행위를 정의할 클래스를 만들고 인터페이스의 메서드를 재정의하여 특정 행위를 구현한다.