24. 템플릿 메서드 패턴(Template Method Pattern) 설계

24. 3 디자인

템플릿 메서드의 예제로는 프레임 워크를 기반으로 구체화 된 응용을 보여드리겠습니다.

프레임 워크에 해당하는 클래스 이름은 EHApp 라 정하였고 사용자에게 노출하는 메서드로는 Do가 있습니다. EHApp 클래스의 Do 메서드에서는 응용에서 필요한 초기화 작업을 하는 InitInstance를 수행한 후에 사용자와 상호 작용을 수행하는 Run을 수행하고 응용을 종료할 때 해제화 작업을 하는 ExitInstance를 정의하였습니다.

물론 EHApp를 기반으로 파생한 MyApp에서는 목적에 맞게 초기화 작업과 해제화 작업에 대한 재정의할 수 있어야겠죠. 그리고 Run 메서드에서는 메뉴를 선택한 것이 종료 키가 아니라면 선택한 키에 따라 작업을 수행하게 하였습니다. 대신 선택한 키가 1일 경우에는 제품 정보를 출력하게 정의를 하였죠. 여기에서도 EHApp를 기반으로 파생한 MyApp에서는 목적에 맞게 선택한 키에 따라 작업을 수행하는 부분에 대해 재정의할 수 있어야 할 것입니다.

이와 같이 EHApp에 기본적인 골격을 정의해 놓게 되면 실제 응용을 제작할 때에는 목적에 맞게 재정의를 해야 하는 부분에 대해서만 작업을 하면 되겠죠. 결국 개발자 입장에서도 매 번 동일한 작업을 해야 하는 비용을 줄일 수 있고 해당 프로그램에 국한된 사항에 대한 구체적인 구현에만 고민할 수 있어요.

[그림] 템플릿 메서드 패턴 클래스 다이어그램
[그림] 템플릿 메서드 패턴 클래스 다이어그램