SSAFY11th-book-study / book-study

SSAFY 11기 6반의 '토비의 스프링 스터디'
0 stars 0 forks source link

[3.2.2] 템플릿 메서드 패턴에서의 유연성 #25

Closed gmelon closed 7 months ago

gmelon commented 8 months ago

p.221 상단에 서브클래스들이 이미 클래스 레벨에서 컴파일 시점에 이미 그 관계가 결정되어 있다. 따라서 그 관계에 대한 유연성이 떨어져 버린다. 라는 말이 나옵니다.

이 문장을 저는 템플릿 메서드 패턴을 적용할 경우 사용하고자 하는 (변경되는) 기능마다 구체 클래스를 만들고 명시해야 하기 때문에 컴파일 타임에 사용할 구체 클래스가 확정되어 유연성이 떨어진다고 이해했는데 다른 분들은 어떻게 이해하셨는지 궁금합니다.

그리고, 이러한 템플릿 메서드 패턴의 단점을 인터페이스를 사용해 개선할 수 있는 방법은 없을까요?

gmelon commented 7 months ago

인터페이스를 사용해 템플릿 메서드 패턴의 '매번 클래스를 만들어야 하고 컴파일 타임에 구현체가 확정되는 문제'를 개선하면 전략 패턴과 유사한 구조가 만들어집니다.

템플릿 메서드 패턴과 전략 패턴은 상황에 맞게 변경되눈 로직을 실행한다는 비슷한 목적을 갖지만 전자는 상속을 통해, 후자는 합성을 통해 문제를 해결한다는 차이점이 있습니다.

이러한 차이로 인해 전략 패턴이 조금 더 유연한 구조를 가질 수 있다고 생각합니다.