전략 패턴

전략 패턴이란?

  • 템플릿 메서드 패턴
    • 부모 클래스에 변하지 않는 템플릿이 존재
    • 자식 클래스가 부모 클래스를 상속해서 변하지 않는 부분의 재작성없이 변하는 부분만 작성 가능
  • 전략 패턴
    • 변하지 않는 부분이 Context에 존재 (변하지 않는 템플릿 역할)
    • 변하는 부분이 Strategy라는 인터페이스의 구현에 존재 (변하는 알고리즘 역할)
    • 상속이 아니라 위임으로 해결

전략 패턴 예시

public interface Strategy {
  void call();
}

public class StrategyLogic implements Strategy {
  @Override
  public void call() {

  }
}

public class Context {
  private Strategy strategy;
  
  public Context(Strategy strategy) {
    this.strategy = strategy;
  }

  public void execute() {
    // ...
    strategy.call();
    // ...
  }
}

  • 핵심은 ContextStrategy만 의존함