템플릿 메소드 패턴 알아보기
- 템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도합니다
템플릿 메소드 패턴의 정의
- 템플릿 메소드 패턴(Template Method Pattern)은 알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 정의할 수도 있습니다.
- 간단하게 말하자면 템플릿 메소드 패턴은 알고리즘의 템플릿(틀)을 만듭니다.
템플릿 메소드 속 후크 알아보기
- 후크(hook)는 추상 클래스에서 선언되지만 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드입니다. 이러면 서브클래스는 다양한 위치에서 알고리즘이 끼어들 수 있습니다.
할리우드 원칙
- 할리우드 원칙 : 먼저 연락하지 마세요. 저희가 연락 드리겠습니다.
- 할리우드 원칙을 활용하면 의존성 부패(dependency rot)를 방지할 수 있습니다.
- 어떤 고수준 구성 요소가 저수준 구성 요소에 의존하고, 그 저수준 구성 요소는 다시 고수준 구성 요소에 의존하고, 그 고수준 구성 요소는 다시 또 다른 구성 요소에 의존하고, 그 다른 구성 요소는 또 저수준 구성 요소에 의존하는 것과 같은 식으로 의존성이 복잡하게 꼬여있는 상황을 의존성이 부패했다고 부릅니다. 이렇게 의존성이 부패하면 시스템 디자인이 어떤 식으로 되어 있는지 아무도 알아볼 수 없습니다.
- 할리우드 원칙을 사용하면 저수준 구성 요소가 시스템에 접속할 수는 있지만 언제, 어떻게 그 구성 요소를 사용할지는 고수준 구성 요소가 결정합니다.
- 할리우드 원칙과 의존성 뒤집기 원칙의 관계
- 두 원칙은 객체를 분리한다는 하나의 목표를 공유하지만, 의존성을 피하는 방법에 있어서 의존성 뒤집기 원칙이 훨씬 더 강하고 일반적인 내용을 담고 있습니다. 할리우드 원칙은 저수준 구성 요소를 다양하게 사용할 수 있으면서도, 다른 클래스가 구성 요소에 너무 의존하지 않게 만들어 주는 디자인 구현 기법을 제공합니다.
- 정리
- 템플릿 메소드 패턴
- 알고리즘의 어떤 단계를 구현하는 방법을 서브클래스에서 결정합니다.
- 전략 패턴
- 바꿔 쓸 수 있는 행동을 캡슐화하고, 어떤 행동을 사용할지는 서브클래스에 맡깁니다.
- 팩토리 메소드 패턴
- 구상 클래스의 인스턴스 생성을 서브클래스에서 결정합니다.
summary