지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 추상 클래스
추상 클래스와 템플릿 메서
추상 클래스를 활용한 예로 템플릿 메서드를 알아보자. '템플릿 메서드(template method)'란 틀이 있는 메서드라는 뜻이다. 전에 작성한 글의 싱글톤 패턴과 같은 디자인 패턴이다. 템플릿 메서드는 추상 클래스를 사용하여 구현할 수 있으며 아래 사진을 통해 알아보자.

생성한 Car 클래스에는 drive( )와 stop( ) 추상 메서드와 3개의 구현된 메서드 startCar( ), turnOff( ), run( )을 갖고 있다. 여기서 16~21행에 선언한 구현된 템플릿 메서드인 run( )을 살펴보자. 이 메서드는 시동을 켜고, 달리고, 멈추고, 시동을 끈다. 만약 Car 클래스를 상속받으면 어떤 자동차든 모두 이 순서대로 달리는 것이다.
그러면 Car 클래스를 상속받는 두 클래스 AICar와 ManualCar를 만들어 자동차 종류에 따라 달라지는 추상 메서드를 구현해보자.
AICar 클래스 구현하기

ManualCar 클래스 구현하기

두 클래스 모두 Car를 상속받고 추상 메서드인 drive( )와 stop( )을 구현했다. 이제 테스트 프로그램을 만들어보자.
CarTest 클래스 구현하기


템플릿 메서드의 역할
CarTest에서 두 개의 인스턴스는 이미 Car 클래스에서 구현된 run( )메서드를 호출했다. 이는 어느 차나 작동 순서가 동일하다. 이처럼 템플릿 메서드의 역할은 메서드 실행 순서와 시나리오를 정의하는 것이다. 템플릿 메서드에서 호출하는 메서드가 추상메서드라면 차종에 따라 구현 내용이 바뀔 수는 있지만 시나리오는 바뀌지 않는다. 이런 메서드를 템플릿 메서드로 정의하는 것이다. 템플릿 메서드는 시나리오(실행 순서)를 정의한 메서드이므로 하위 클래스에서 재정의하면 안 된다. 그래서 템플릿 메서든는 final 예약어를 사용해 선언한다. 이는 로직 흐름이 이미 정해져 있는 프레임워크에서 많이 사용하는 구현 방법이라고 한다.
참고 서적: 자바 프로그래밍 입문 - 박은종
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA 입문 - final 예약어 (0) | 2022.05.25 |
---|---|
JAVA 입문 - 템플릿 메서드 응용하기 (0) | 2022.05.24 |
JAVA 입문 - 추상 클래스 (0) | 2022.05.23 |
JAVA 입문 - 다운 캐스팅과 instanceof (0) | 2022.05.22 |
JAVA 입문 - 다형성 활용 (0) | 2022.05.22 |