[디자인패턴] 전략 패턴 ( Strategy Pattern )
<aside> 💡 스트래티지 패턴은 같은 문제를 해결하는 여러 알고리즘(방식)이 클래스별로 캡슐화 되어있고, 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게하는 디자인 패턴이다.
</aside>
알고리즘군을 정의하고, 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다.
런타임시에도 setter로 전략(행위 캡슈화모음) 을 바꿀수 있다.
전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다.
//변경이 자주 일어날 행위에 대한 인터페이스를 정의한다.
public interface QuackBehavior {
void quack();
}