Computer Basis/디자인패턴 및 설계이론

[디자인패턴] 템플릿패턴(Template Pattern)

DevPing9_ 2022. 1. 26. 20:28

# Template Pattern 

Template Method, Hook Method 를 활용하여 전체적인 흐름을 정해놓는 디자인 패턴

 

추상클래스로 작성하게되면 new를 통해 인스턴스화 시킬 수 없고, 상속만 가능하게 하여 직접 구현하여 쓰도록 강제할 수 있다.

 

 

# 예시코드

public abstract class Car {

    //overrding 가능
    public void turnOn(){
        System.out.println("시동을 켠다");
    };
    
    //하위 클래스에 delegate (overriding 필수)
    public abstract void drive();

    //overrding 가능
    public void turnOff(){
        System.out.println("시동을 끈다.");
    }
    
    //HookMethod (필요하다면 재정의해서 사용할 수 있음, 재정의하지 않으면 그냥 넘어가는 메서드들)
    public void beforeTurnOn(){};
    public void afterTurnOn(){};
    public void beforeTurnOff(){};
    public void afterTurnOff(){};
    

    // 템플릿 메서드 (overriding 불가)
    public final void driving(){
        beforeTurnOn();
        turnOn();
        afterTurnOn();
        drive();
        beforeTurnOff();
        turnOff();
        afterTurnOff();
    }

}

 

 

 

# Reference

 

추상클래스와 템플릿패턴

추상클래스는 abstract 키워드를 사용해 선언된 클래스이다. 일반적으로 추상메서드를 포함하는 클래스를 의미하지만, 포함하지 않더라도 abstract 키워드를 사용한 클래스라면 추상클래스이다. 해

velog.io

 

728x90