템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유럽게 변경되는 성지을 가진 부분으로부터 독립시켜 효과적으로 활용할 수 있는 방법
변하는 부분을 변하지 않는 나머지 코드에서 분리하는 것이 어떨까?
클래스 파일이 많아지는 문제는 전략 클래스를 매번 독립된 파일로 만들지 말고 UserDao 클래스 안 내부 클래스로 정의해버려라
의존관계 주입이라는 개면ㅇ므 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 안헥하고, 런타임 시에 의존할 오브젝트와의 관계를 다이나믹하게 주입해주는 것이 맞다.
넓게 보자면 객체의 생성과 관계 설정에 대한 제어 권한을 오브젝트에서 제거하고 외부로 위임했다는 IoC라는 개념을 포괄한다.
전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식을 템플릿/콜백 패턴이라고 부른다.
(전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라고 부른다.)