Strategy Pattern

필요한 이유 : 로직의 추가/수정이 있을 시 OCP에 위배되는 상황 발생.

해결책 : 무엇이 쉽게 변화되는지를 찾는다. 이것을 인터페이스로 만들어서 실제 이것을 구현하는 클래스를 만든다.

결과 : 기능을 이용하는 객체와는 상관없이 향후 등장할 새로운 로직에도 잘 처리할 수 있게 된다.

  • JAVA 객체지향 디자인 패턴 책으로 학습. ex) 로봇의 이동방식과 공격 방식 이동방식 - 걸을 수도 있고, 날 수도 있다. 공격방식 - 펀치일수도 있고, 미사일일수도 있다.

Strategy Pattern의 역할

  1. Strategy : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시한다.
  2. ConcreteStrategy1, ConcreteStrategy2, ConcreteStrategy3 : 스트래티지 패턴에서 명시한 알고리즘을 실제로 구현한 클래스다.
  3. Context : 스트래티지 패턴을 이용하는 역할을 수행한다. 필요에 따라 동적으로 구체적인 전략을 바꿀 수 있도록 setter 메서드를 제공한다.

스트래티지 패턴을 사용하게 되면 스태리티지를 동적으로 갈아낄수 있도록 하기 위한 setter 메서드가 필요하다!