1 Strategy
- Strategy 패턴은 탬플릿 메서드 패턴처럼 변하는 것과 변하지 않는 것을 분리하는 것이 핵심이다
- 전략 패턴은 변하지 않는 부분을 Context 라는 곳에 두고, 변하는 부분을 Strategy 라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다.
- Context: 변하지 않는 템플릿 역할
- Strategy: 변하는 알고리즘 역할을 한다.
- 전략 패턴의 핵심은 Context 는 Strategy 인터페이스에만 의존한다는 점이다.
- 덕분에 Strategy 의 구현체를 변경하거나 새로 만들어도 Context 코드에는 영향을 주지 않는다.
GOF의 Strategy 정의
- 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자.
- 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.