디자인 패턴 ~Template Method~

1. 소개



GoF의 디자인 패턴에서 Template Method 패턴을 요약합니다.

2. Template Method 패턴이란?


  • Template는 문자 모양에 구멍이 있는 얇은 플라스틱 판입니다. Template를 보면 어떤 문자를 쓸 수 있는지는 알 수 있지만, 실제로 어떤 문자가 될지는 구체적인 필기 도구가 정해지지 않으면 알 수 없습니다.
  • Template Method 패턴은, 슈퍼 클래스로 처리의 틀을 정해, 서브 클래스로 그 구체적 내용을 정하는 방식입니다.
  • GoF 디자인 패턴은 동작에 대한 디자인 패턴으로 분류됩니다.

  • 3. 샘플 클래스 다이어그램





    4. 샘플 프로그램



    몬스터의 이름, 공격력, 수비력을 표시하는 프로그램입니다.

    4-1. AbstractMonster 클래스



    템플릿이 되는 클래스입니다.

    AbstractMonster.java
    public abstract class AbstractMonster {
    
        public String name;
        public abstract int getAttack();
        public abstract int getDefense();
    
        public final void showInfo() {
            System.out.print("名前:");
            System.out.println(name);
            System.out.print("攻撃力:");
            System.out.println(getAttack());
            System.out.print("守備力:");
            System.out.println(getDefense());
            System.out.println();
        }
    }
    

    4-2. Slime 클래스



    AbstractMonster 클래스로 정의된 메서드를 구현하는 클래스입니다.

    Slime.java
    public class Slime extends AbstractMonster {
    
        public Slime(String name) {
            this.name = name;
        }
    
        public int getAttack() {
            return 15;
        }
    
        public int getDefense() {
            return 10;
        }
    }
    

    4-3. Dragon 클래스



    AbstractMonster 클래스로 정의된 메서드를 구현하는 클래스입니다.

    Dragon.java
    public class Dragon extends AbstractMonster {
    
        public Dragon(String name) {
            this.name = name;
        }
    
        public int getAttack() {
            return 60;
        }
    
        public int getDefense() {
            return 45;
        }
    }
    

    4-4. Main 클래스



    메인 처리를 실시하는 클래스입니다.

    Main.java
    public class Main {
        public static void main(String[] args) {
            AbstractMonster slime = new Slime("スライムくん");
            AbstractMonster dragon = new Dragon("ドラゴンさん");
            slime.showInfo();
            dragon.showInfo();
        }
    }
    

    4-5. 실행 결과


    名前:スライムくん
    攻撃力:15
    守備力:10
    
    名前:ドラゴンさん
    攻撃力:60
    守備力:45
    

    5. 장점



    Template Method 패턴에서는, 슈퍼 클래스의 템플릿 메소드로 알고리즘이 기재되어 있으므로, 서브 클래스측에서는 알고리즘을 일일이 기술할 필요가 없어집니다.
    예를 들어 Template Method 패턴을 사용하지 않고 비슷한 클래스, Class1, Class2, Class3... 해야 합니다.
    Template Method 패턴으로 작성하고 있으면, 템플릿 메소드에 버그가 발견되었을 경우에서도, 템플릿 메소드조차 수정하면 됩니다.

    6. GitHub


  • htps : // 기주 b. 코 m / 이타나카 730 /

  • 7. 디자인 패턴 목록


  • GoF 디자인 패턴 요약

  • 8. 참고



    이번 기사 및 샘플 프로그램은 이하의 서적을 바탕으로 작성하였습니다.
  • Java 언어로 배우는 디자인 패턴 입문

  • 매우 이해하기 쉽고 공부가되었습니다. 감사합니다.
    디자인 패턴이나 샘플 프로그램에 대한 설명이 상세하게 쓰여져 있으므로, 꼭 서적의 분도 봐 주세요.

    좋은 웹페이지 즐겨찾기