전략 패턴
전략 패턴이란?
- 템플릿 메서드 패턴
- 부모 클래스에 변하지 않는 템플릿이 존재
- 자식 클래스가 부모 클래스를 상속해서 변하지 않는 부분의 재작성없이 변하는 부분만 작성 가능
- 전략 패턴
- 변하지 않는 부분이
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();
// ...
}
}
- 핵심은
Context
가Strategy
만 의존함