디자인 패턴 - Template

이강민·2025년 1월 16일
0

커널360

목록 보기
55/56

템플릿 패턴

  • 템플릿 패턴은 추상 클래스를 정의해서 추상 클래스 내부에 추상 메소드를 이용하여 하나의 비즈니스 로직을 정의하여 사용자는 추상 메소드를 정의해서 사용할 수 있도록 하는 패턴이다.
    쉽게 말해 하나의 템플릿을 만들어 재사용하는 것이다.

장점

템플릿 패턴을 사용하면 상위 클래스의 템플릿 메소드에 알고리즘이 기술되어 있어 하위 클래스 쪽에는 알고리즘을 일일이 기술할 필요가 없어진다.

추상클래스를 사용하는 이유

추상클래스를 사용하는 이유는 무엇일까?
인스턴스화 할 수 도 없고 메소드 내부를 정의하지 않은 클래스인데 말이다.

템플릿 패턴을 통해 불필요한 반복을 줄이고 쉽게 개발 할 수 있도록 도와주는 템플릿 패턴이 있을 수 있는 것은 추상 클래스 덕분이다.

예시코드

추상클래스


public abstract class AbstractDisplay {
    public abstract void open();
    public abstract void print();
    public abstract void close();

    //추상 메소드의 순서를 이용해 템플릿을 만듦
    public final void display() {
        open();
        for(int i = 0; i< 5; i++){
            print();
        }
        close();
    }
}

사용클래스

public class StringDisplay extends AbstractDisplay {
    private final String str;
    private final int width;

    public StringDisplay(String str) {
        this.str = str;
        this.width = str.length();
    }
    @Override
    public void open() {
        printLine();
    }

    @Override
    public void print() {
        System.out.println("|" + str + "|");
    }

    @Override
    public void close() {
        printLine();
    }

    private void printLine(){
        System.out.print("+");
        for(int i = 0; i < width; i++){
            System.out.print("-");
        }
        System.out.println("+");
    }
}

사용클래스에서는 추상메서드를 정의만 하면된다.
이미 템플릿이 정의되어 있기 때문이다. 확장성에 좋은 코드가 만들어지는 것이다.

public class CharDisplay extends AbstractDisplay {
    private final char ch;

    public CharDisplay(char ch) {
        this.ch = ch;
    }
    @Override
    public void open() {
        System.out.print("<<");
    }

    @Override
    public void print() {
        System.out.print(ch);
    }

    @Override
    public void close() {
        System.out.print(">>");
    }
}

charDisplay클래스도 메서드의 역할만 정의했고 비즈니스 로직은 상위클래스에 정의되어 있다.

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보