Computer Science/Design Pattern

[Design Pattern] Template Method Pattern

by Donghwan 2021. 8. 3.

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법입니다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 합니다. 알고리즘의 구조를 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴입니다. 쉽게 말해 전체 구조는 바꾸지 않으면서 특정 단계를 수행하는 내역을 바꾸는 패턴입니다. 상속 관계(Is-a)를 이용합니다.

장점은 중복 코드를 줄일 수 있지만, 단점으로 추상 메소드가 많아지면서 클래스 관리가 복잡해지고 또 확장구조가 이미 클래스를 설계하는 시점에서 고정되어 관계에 대한 유연성이 떨어집니다.

 

Abstract

public abstract class Abstract {
    public void superMethod() {
        System.out.println("Super Class");
    }
    public abstract void abstractMethod();
}

 

ConcreteClass

public class ConcreteClass extends Abstract{
    @Override
    public void abstractMethod() {
        System.out.println("Sub Class");
    }
}

 

Client

public class Main {
    public static void main(String[] args) {
        ConcreteClass template = new ConcreteClass();

        template.superMethod(); //Super Class
        template.abstractMethod(); //Sub Class
    }
}

출처

728x90
반응형

'Computer Science > Design Pattern' 카테고리의 다른 글

관찰자패턴 (Observer Pattern)  (0) 2023.01.29
전략패턴 (Strategy Pattern)  (0) 2023.01.29
Singleton Pattern  (0) 2022.01.15
[Design Pattern] Proxy Pattern  (0) 2021.08.18
[Design Pattern] Strategy Pattern  (0) 2021.08.03

댓글