전략 패턴
- 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴
- 자바 개발자가 가장 자주 쓰는 패턴
- 컨텍스트에서 사용할 알고리즘을 클라이언트가 선택한다.
BlueLightRedLight(class) - Context
Speed(interface) - Strategy
Normal - ConcreteStrategy
Faster - ConcreteStrategy
Client
장점
- 새로운 전략을 추가하더라도 기존 코드를 변경하지 않는다.(OCP)
- 상속 대신 위임을 사용할 수 있다.
- 런타임에 전략을 변경할 수 있다.
단점
- 복잡도가 증가한다.
- 클라이언트 코드가 구체적인 전략을 알아야 한다.