전략 패턴이란?

  • 템플릿 메서드 패턴
    • 부모 클래스에 변하지 않는 템플릿이 존재
    • 자식 클래스가 부모 클래스를 상속해서 변하지 않는 부분의 재작성없이 변하는 부분만 작성 가능
  • 전략 패턴
    • 변하지 않는 부분이 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만 의존함