템플릿 메서드 패턴은 부모 클래스에 변하지 않는 템플릿을 두고, 변하는 부분을 자식 클래스에 두어서 상속을 사용해서 문제를 해결한다.
전략 패턴은 변하지 않는 부분을 Context 라는 곳에 두고, 변하는 부분을 Strategy 라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다. 상속이 아니라 위임으로 문제를 해결한다.
Context가 변하지 않는 템플릿 역할을 하고, Strategy는 변하는 알고리즘 역할을 한다.
알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만든다. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.
Context는 내부에 Strategy strategy 필드를 가지고 있다. 이 필드에 변하는 부분인 Strategy의 구현체를 주입하면 된다.
전략 패턴의 핵심은 Context는 Strategy 인터페이스에만 의존한다는 점이다. 그래서 Strategy의 구현체를 변경하거나 새로 만들어도 Context 코드에는 영향을 주지 않는다.
'java > 디자인패턴' 카테고리의 다른 글
어뎁터 패턴 (adapter pattern) (0) | 2023.02.03 |
---|---|
프록시, 데코레이터 패턴 (0) | 2022.10.09 |
전략 패턴, 템플릿 콜백 패턴 (0) | 2022.10.08 |
템플릿 메서드 패턴 (0) | 2022.10.02 |
전략 패턴(Strategy pattern) (0) | 2022.08.19 |
댓글