[Java] 템플릿 메서드 패턴 (Template Method pattern)

2023. 2. 11. 22:56·Java/Design Pattern
728x90
728x90

#  관련 포스팅

  - 추상 클래스 : https://young0105.tistory.com/46

 


템플릿 메서드 패턴 (Template Method pattern)

  - 추상 메서드 or 구현된 메서드를 활용하여, 코드의 흐름(시나리오)를 정의하는 디자인 패턴

  - '행위' 디자인 패턴

  - final로 선언함

      → 자식 클래스가 해당 메서드에 대해 재정의할 수 없게 함 (메서드 오버라이드 금지)

  - 프레임워크에서 자주 사용됨

  - 부모 클래스에서 선언되어, 전체적인 흐름을 정의함

      → 각 자식 클래스마다 다르게 구현되어야 하는 부분은 추상 메서드로 선언함

      → 자식 클래스는 추상 메서드를 구체화함

  - 전체적인 구조는 바꾸지 않으면서, 특정 단계에서 수행하는 내역을 바꿈

// 부모 클래스 파일 //

// 메서드1 선언
// 메서드2 선언
...

// 템플릿 메서드 
final public void 메서드명() {
    // 실행의 순서에 따라 메서드들을 나열함
    메서드1();
    메서드2();
    ...
}
// 예시 //

public abstract class Car {

    public abstract void drive();
    public abstract void stop();

    private void startCar() {
        System.out.println("시동을 켭니다");
    }

    private void turnOff() {
        System.out.println("시동을 끕니다");
    }

    public abstract void wiper();

    // 후크 메서드
    public void washCar() {}

    // 템플릿 메서드
    final public void run() {
        startCar();
        drive();
        wiper();
        stop();
        turnOff();
        washCar();
    }

}

#  후크 메서드

pulic void 메서드명() {

}

 

  - 아무 것도 구현하지 않는 일반 메서드

  - 템플릿 메서드(실행의 흐름) 안에 넣어두고, 필요하면 재정의하여 사용할 수 있도록 함

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

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

[Java] 전략 패턴 (Strategy pattern)  (0) 2023.04.11
[Java] 싱글톤 패턴 (Singleton pattern)  (0) 2023.04.10
[Java] 어댑터 패턴 (Adapter pattern)  (0) 2023.03.27
[Java] 디자인 패턴 정리  (0) 2023.03.27
[Java] 빌더 패턴 (Builder pattern)  (0) 2023.03.23
'Java/Design Pattern' 카테고리의 다른 글
  • [Java] 싱글톤 패턴 (Singleton pattern)
  • [Java] 어댑터 패턴 (Adapter pattern)
  • [Java] 디자인 패턴 정리
  • [Java] 빌더 패턴 (Builder pattern)
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    오블완
    티스토리챌린지
    errorNote
    Wordpress
    CSS
    HTML
    Hotkeys
    Android
    Swing
    SpringBoot
    cs
    php
    http
    jsp
    C#
    typeScript
    SQL
    면접
    SEO
    jQuery
    개발일지
    js
    vuejs
    git
    tailwindcss
    java
    SWAGGER
    zapier
    Codeigniter
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 템플릿 메서드 패턴 (Template Method pattern)
상단으로

티스토리툴바