패턴 정의를 외웠는지가 아니라, 상속으로 흐름을 고정하는 선택의 비용을 이해하는지를 본다. 전략 패턴과의 선택 기준을 자기 언어로 끊어 말할 수 있느냐가 깊이의 분기점이다.
템플릿 메서드 패턴은 상위 클래스가 알고리즘의 호출 순서를 final로 고정하고, 가변 단계를 추상 메서드나 훅으로 열어 하위 클래스가 채우게 하는 행위 패턴이다. 핵심은 흐름 자체는 한 곳에 묶어 두고 변경 축만 하위로 위임한다는 데 있다. 그래서 절차는 똑같은데 일부 단계만 다른 로직이 반복될 때 중복을 제거하면서 순서를 어기지 못하게 강제한다. 단 상위 변경이 모든 하위에 번지는 상속 결합도가 같이 따라온다.
비슷한 흐름의 메서드가 여러 클래스에 흩어져 있던 코드를 상위로 끌어올렸던 경험이 있다면 "무엇을 final로 묶었고 무엇을 열어 뒀는지"로 연결할 수 있다
상위 클래스를 한 줄 바꿨다가 하위 전부가 깨졌던 경험이 있다면 상속 결합도 비용을 본인 사례로 풀어낼 수 있다
처음에 템플릿 메서드로 짰다가 전략 패턴으로 바꾼 경험이 있다면 "변경 축이 단계에서 조합으로 옮겨가는 신호"로 일반화할 수 있다
프레임워크 훅 메서드를 오버라이드하다 호출 순서를 헷갈렸던 경험이 있다면 훅 설계가 LSP에 주는 부담으로 묶어낼 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.