에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 템플릿 메서드 패턴알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도하는 패턴 장점알고리즘의 구조가 유지됨알고리즘의 특정 단계를 서브클래스에서 재정의 할 수 있음후크를 사용하여 실행 조건을 서브클래스에서 재정의할 수 있음 2. CaffeineBeveragepublic abstract class CaffeineBeverage { final void prepareRecipe() { boilWater(); brew(); pourInCup(); if (customerWantsCondiments()) addCondiments(); } abs..