이미 설계된 프로그램의 기능중 하나에 변화가 생길 것 같다. 다른 코드를 변경하지 않으면서 새로운 기능을 추가하고 싶다. 이런 경우 사용하는 패턴이 스트래터지 패턴이다.
스트래터지 패턴은 strategy(전략, 기능등)을 쉽게 바꿀 수 있도록 해주는 패턴이다.
Context 클래스는 strategy를 호출하여 이용하는 클래스이다. strategy 클래스와 aggregation으로 연결되어 있어 상속 보다 유연하게 연결되어있다.
Strategy 클래스는 추가 될 수 있는 기능에 대한 인터페이스를 제공한다.
Concrete 클래스는 구체 strategy에 대한 메소드 정의가 있다.