Closed gmelon closed 7 months ago
유명한 사이트라서 다들 이미 보셨을 수도 있지만... 여기만큼 설명이 맛도리인 곳이 없어서 참고 사이트로 남깁니다.
템플릿 메서드 패턴 - https://refactoring.guru/ko/design-patterns/template-method
전략 패턴 - https://refactoring.guru/ko/design-patterns/strategy
템플릿 콜백 패턴은 GOF 패턴이 아니라서 그런지, 위 사이트에 설명이 없어 괜찮은 설명이 있는 블로그를 찾아왔습니다.
위에 있는 사이트들에 아주 정리가 잘 되어 있지만... 저도 나름대로 정리를 해 보자면
부모 클래스에서 알고리즘의 골격을 정의하지만, 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드(재정의)할 수 있도록 하는 행동 디자인 패턴
템플릿 메서드 패턴은 알고리즘의 구조를 정의하고 일부 단계를 서브 클래스에게 위임하지만, 전략 패턴은 알고리즘을 완전히 변경할 수 있는 독립적인 객체를 사용하여 런타임에 변경할 수 있음
여러 알고리즘을 캡슐화하고 이들을 상호 교체가 가능하게 만들어서 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있게 하는 디자인 패턴
템플릿 콜백 패턴은 알고리즘의 일부를 클라이언트가 제공하는 콜백 함수에 위임하는 반면, 전략 패턴은 전략 객체를 사용하여 알고리즘을 교체. 따라서 전략 패턴은 전략을 객체로 캡슐화하는 반면, 템플릿 콜백 패턴은 콜백 함수를 사용하여 알고리즘의 일부를 외부에서 제공함
알고리즘의 일부를 클라이언트가 제공하는 콜백 함수에 위임하여 알고리즘의 동작을 변경할 수 있도록 하는 디자인 패턴
3장에서 계속해서 언급되는 아래 3가지 디자인 패턴들이 닮아있으면서도 조금씩 다른 점이 있는 것 같습니다.
명확하게 정리하고 넘어가면 좋을 것 같아서 이슈 남깁니다. 저도 찾아보고 댓글 달아두겠습니다!