JAVA

JAVA 디자인패턴 - 템플릿 메서드(Template Method) 패턴

TECH 톡마스터 2023. 7. 16.

[ 목차 ]

    JAVA 디자인패턴 - 템플릿 메서드(Template Method) 패턴
    JAVA 디자인패턴 - 템플릿 메서드(Template Method) 패턴

    안녕하세요. JAVA 디자인패턴 중 템플릿 메서드(Template Method) 패턴에 대해서 알아볼까요?

    템플릿 메서드(Template Method) 패턴 이란?

    템플릿 메서드 패턴은 알고리즘의 골격을 제공하고, 일부 단계를 하위 클래스에서 구현하도록 하는 행동 패턴입니다. 이 패턴을 사용하면 알고리즘의 구조를 변경하지 않고, 코드 재사용을 통해 알고리즘의 일부 단계를 확장 및 수정할 수 있습니다.

    템플릿 메서드(Template Method) 패턴 구현 방법

    템플릿 메서드 패턴을 구현하기 위해 다음 요소들이 필요합니다.

    1. AbstractClass: 템플릿 메서드를 포함하고, 구체적인 단계들을 정의한 추상 클래스입니다.
    2. ConcreteClass: AbstractClass를 상속받아 구체적인 사항들을 구현한 클래스입니다.
    // AbstractClass
    public abstract class Game {
        abstract void initialize();
        abstract void startPlay();
        abstract void endPlay();
    
        // 템플릿 메서드
        public final void play() {
            initialize();
            startPlay();
            endPlay();
        }
    }
    
    // ConcreteClass
    public class SoccerGame extends Game {
        @Override
        void initialize() {
            System.out.println("Soccer game initialized!");
        }
    
        @Override
        void startPlay() {
            System.out.println("Soccer game started!");
        }
    
        @Override
        void endPlay() {
            System.out.println("Soccer game finished!");
        }
    }
    
    // 클라이언트 코드
    public class Main {
        public static void main(String[] args) {
            Game game = new SoccerGame();
            game.play(); // 출력: Soccer game initialized! Soccer game started! Soccer game finished!
        }
    }

    템플릿 메서드(Template Method) 패턴의 장단점

    장점

    • 중복 코드의 제거 및 코드 재사용이 가능합니다. 공통 로직은 기본 클래스에 있으므로 하위 클래스에서는 변화하는 부분만 구현하면 됩니다.
    • 유지 및 확장이 쉽습니다. 변경이 필요한 부분만 상속받아 구현하므로, 기본 알고리즘에 영향을 주지 않으면서 새로운 기능을 추가할 수 있습니다.
    • 코드 구조가 명확하고 이해하기 쉽습니다.

    단점

    • 추가하거나 수정할 단계가 많아지면 복잡성이 증가할 수 있습니다.
    • 상속을 통한 기능 확장이므로 클래스 간의 강한 결합이 존재할 수 있습니다.

    템플릿 메서드(Template Method) 패턴의 활용 예

    템플릿 메서드 패턴은 다음과 같은 상황에서 유용하게 사용됩니다.

    • 여러 관련 알고리즘이 있고, 각 알고리즘마다 공통된 전체 구조와 단계별 차이점이 있는 경우(예: 데이터 처리 알고리즘, 게임 유형별 게임 흐름 등)
    • 공통 프로세스를 담고 있는 기본 프레임워크를 제공하고, 사용자가 커스터마이징 할 수 있는 시스템을 제공할 때 이 패턴은 재사용 및 확장성 때문에 다양한 애플리케이션에서 사용되며, 특히 프레임워크 및 공통 라이브러리에서 흔히 발견됩니다.

    2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴

     

    디자인패턴 - 팩토리(Factory) 패턴

    2023.07.12 - [JAVA] - 디자인패턴 - 싱글톤(Singleton) 패턴 [ 목차 ] 안녕하세요. 이번에는 팩토리(Factory) 패턴에 대해서 알아보도록 하겠습니다. 1. 팩토리(Factory) 패턴 이란? 팩토리 패턴은 객체 생성을

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴

     

    디자인패턴 - 팩토리(Factory) 패턴

    2023.07.12 - [JAVA] - 디자인패턴 - 싱글톤(Singleton) 패턴 [ 목차 ] 안녕하세요. 이번에는 팩토리(Factory) 패턴에 대해서 알아보도록 하겠습니다. 1. 팩토리(Factory) 패턴 이란? 팩토리 패턴은 객체 생성을

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴

     

    디자인패턴 - 어댑터(Adapter) 패턴

    [ 목차 ] 안녕하세요. 오늘 알아볼 패턴은 어댑터(Adapter) 패턴입니다. 1. 어댑터(Adapter) 패턴 이란? 어댑터 패턴은 디자인 패턴 중 하나로, 서로 다른 인터페이스를 가진 클래스 또는 객체를 협력할

    tech.dj-tiger.com

    2023.07.12 - [JAVA] - JAVA 디자인패턴 - 싱글톤(Singleton) 패턴

     

    디자인패턴 - 싱글톤(Singleton) 패턴

    2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴 [ 목차 ] 안녕하세요. 자바에는 다양한 디자인 패턴이 존재하고, 각 패턴은 특정한 문제를 해결하기 위해 설계되었습니다. 적절한 디자인 패턴

    tech.dj-tiger.com

    2023.07.13 - [JAVA] - JAVA 디자인패턴 - 옵저버(Observer) 패턴

     

    JAVA 디자인패턴 - 옵저버(Observer) 패턴

    [ 목차 ] 안녕하세요. 이번에는 Java 디자인패턴 중 옵저버(Observer) 패턴에 대해서 알아보겠습니다. 1. 옵저버(Observer) 패턴이란? 옵저버 패턴은 디자인 패턴 중 하나로, 한 객체의 상태가 변화하면

    tech.dj-tiger.com

     

    2023.07.13 - [JAVA] - JAVA 디자인패턴 - 데코레이터(Decorator) 패턴

    2023.07.14 - [JAVA] - JAVA 디자인패턴 - 프록시(Proxy) 패턴

    2023.07.14 - [JAVA] - JAVA 디자인 패턴 - 커맨드(Command) 패턴

    2023.07.15 - [JAVA] - JAVA 디자인패턴 - 스트래티지(Strategy) 패턴

     

    댓글

    💲 추천 글