템플릿 메서드 패턴

seunghyun lee·2022년 7월 23일
0

Computer Science

목록 보기
11/19
post-thumbnail

템플릿 메서드란?

  • 행위 패턴
  • 템플릿 메소드 패턴이란 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 바꾸는 패턴

  • 템플릿 메소드 패턴은 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의한다.
  • 알고리즘이 단계별로 나누어지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 유용하며 상속을 통해 부모 클래스의 기능을 확장이 용이하다.

템플릿 메서드 패턴 예시

  • Math수업을 듣는 것과 English수업을 듣는 것은
    수업에 들어가 공부를 하고 그 방을 나가는 것이 유사하다.
abstract class Class {
    void startClass() {
        EnterClassRoom();
        study();
        leaveClassRoom();
    }

    void EnterClassRoom() {
        System.out.println("반에 입장한다.");
    }
    public abstract void study();

    void leaveClassRoom() {
        System.out.println("반을 떠난다.");
    }

}
class MathClass extends Class {
    @Override
    public void study() {
        System.out.println("수학 공부를 한다.");
    }
}
class EnglishClass extends Class {
    @Override
    public void study() {
        System.out.println("영어 공부를 한다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Class mathClass = new MathClass();
        Class englishClass = new EnglishClass();

        mathClass.startClass();
        englishClass.startClass();
    }
}

템플릿 메서드 패턴의 장단점

장점

  • 중복코드를 줄일 수 있다.
  • 자식 클래스의 역할을 줄여 핵심 로직의 관리가 용이하다.
  • 좀더 코드를 객체지향적으로 구성할 수 있다.

단점

  • 추상 메소드가 많아지면서 클래스 관리가 복잡해진다.
  • 클래스간의 관계와 코드가 꼬여버릴 염려가 있다.

후크(hook)

  • 추상클래스에서 구현되는 메서드
  • 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메서드

헐리우드 원칙

  • 저수준 클래스에서 고수준 클래스의 접근을 허용하지 않는다.
  • 의존성 부패 현상을 방지한다.

의존성 부패

  • 고수준 클래스가 저수준 클래스에 의존하고, 또 그 저수준 클래스는 고수준 클래스에 의존하면서 의존성이 꼬이게 되는 것을 말한다.

0개의 댓글