디자인 패턴 ~Template Method~
8254 단어 객체 지향디자인 패턴신인 프로그래머 응원uml자바
1. 소개
GoF의 디자인 패턴에서 Template Method 패턴을 요약합니다.
2. Template Method 패턴이란?
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
7. 디자인 패턴 목록
8. 참고
이번 기사 및 샘플 프로그램은 이하의 서적을 바탕으로 작성하였습니다.
매우 이해하기 쉽고 공부가되었습니다. 감사합니다.
디자인 패턴이나 샘플 프로그램에 대한 설명이 상세하게 쓰여져 있으므로, 꼭 서적의 분도 봐 주세요.
Reference
이 문제에 관하여(디자인 패턴 ~Template Method~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i-tanaka730/items/dbeb82ac44c031fe8df9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)