-
디자인 패턴 - 템플릿 메서드 패턴(Template Method Pattern)Java 2022. 3. 18. 00:15
public class Dog{ public void playWithOwner(){ System.out.println("이리와~"); System.out.println("멍! 멍!!"); System.out.println("꼬리 살랑살랑~"); System.out.println("잘했어"); } }public class Cat{ public void playWithOwner(){ System.out.println("이리와~"); System.out.println("야옹.."); System.out.println("꼬리 살랑살랑~"); System.out.println("잘했어"); } }객체지향 설계를 하면
public abstract class Animal{ public void playWithOwner(){ System.out.println("이리와~"); play(); runSomething(); System.out.println("잘했어"); } // 추상 메서드 abstract void play(); // Hook(갈고리) 메서드 void runSomething(){ System.out.println("꼬리 살랑살랑~"); } }Animal 객체를 상속받아 Cat과 Dog 클래스를 구현할 수 있다.
이 때,
abstract 메서드인 play()는 하위 객체에서의 구현을 강제하는 반면,
Hook(갈고리) 메서드는 선택적으로 오버라이딩할 수 있다.
이와 같이 상위 클래스에
공통 로직을 수행하는 메서드 + 하위 클래스에 오버라이딩을 강제하는 추상 메서드 + 선택적으로 오버라이딩 할 수 있는 훅(Hook)메서드를 두는 패턴을 템플릿 메서드 패턴이라고 한다.
"상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴"
'Java' 카테고리의 다른 글
디자인 패턴 - 전략 패턴(Strategy Pattern) (0) 2022.03.21 디자인 패턴 - 팩터리 메서드 패턴(Factory Method Pattern) (0) 2022.03.18 디자인 패턴 - 싱글턴 패턴(Singleton Pattern) (0) 2022.03.17 디자인 패턴 - 데코레이터 패턴(Decorator Pattern) (0) 2022.03.17 디자인 패턴 - 프록시 패턴(Proxy Pattern) (0) 2022.03.16