디자인 패턴 [템플릿 패턴] Template Pattern 개념 예제
Template Pattern이란?
▶ 알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임합니다. 템플릿 메소드는 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의하여 중복되는 코드를 줄이고 유지보수를 편리하게 할 수 있다.
코드 요약
▶ CalculaotrTemplate 추상객체는 덧셈을 하는 연산을 가지고 있습니다. 연산 결과에 앞뒤로 꾸며주는 코드를 작성합니다. 이때 abstract decorate()를 사용하여 서브 클래스에서 계산을 마친 결과를 꾸며주고 return 합니다.
클래스 다이어그램
1. AddDotCalculator class
public class AddDotCalculator extends CalculatorTemplate{
@Override
public String decorate() {
double num = getNum();
StringBuilder sb= new StringBuilder();
sb.append(".").append(num).append(".");
return sb.toString();
}
}
2. AddStarCalculator class
public class AddStarCalculator extends CalculatorTemplate{
@Override
public String decorate() {
double num = getNum();
StringBuilder sb= new StringBuilder();
sb.append("*").append(num).append("*");
return sb.toString();
}
}
3. CalculatorTemplate abstract class
public abstract class CalculatorTemplate {
private double num;
public String execute(double n1, double n2){
this.num=n1+n2;
String decorate = decorate();
return decorate;
}
public double getNum() {
return num;
}
public abstract String decorate();
}
4. Main class
public class Main {
public static void main(String[] args) {
// . 을 추가하는 template
CalculatorTemplate template1 = new AddDotCalculator();
String result1 = template1.execute(1, 2);
System.out.println(result1);
// star 을 추가하는 template
CalculatorTemplate template2 = new AddStarCalculator();
String result2 = template2.execute(3, 4);
System.out.println(result2);
}
}
예시처럼 알고리즘들을 캡슐화 시키며, 중복되는 부분은 부모 클래스에 달라지는 부분은 서브클래스에 구현을 하는 것이 Template Pattern입니다. 읽어주셔서 감사합니다.
전체 코드는 아래에서 확인 가능합니다:)
https://github.com/rlaehdals/design-pattern
'Desing Pattern' 카테고리의 다른 글
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제 (0) | 2022.01.03 |
---|---|
디자인 패턴 [커맨드 패턴] Command Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제 (0) | 2022.01.03 |
디자인 패턴 DAO Pattern 개념과 예제 (0) | 2022.01.01 |
댓글
이 글 공유하기
다른 글
-
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
디자인 패턴 [스테이트 패턴] State Pattern 개념 예제
2022.01.03 -
디자인 패턴 [커맨드 패턴] Command Pattern 개념 예제
디자인 패턴 [커맨드 패턴] Command Pattern 개념 예제
2022.01.03 -
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
디자인 패턴 [퍼사드 패턴] Facade Pattern 개념 예제
2022.01.03 -
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
디자인 패턴 [어댑터 패턴] Adapter Pattern 개념 예제
2022.01.03