반응형
작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화 할 때 유용하다.
다른 관점에서 보면 동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다.
- 상위 클래스에서는 공통적, 하위 클래스에서는 다양하게 코딩을 한다.
즉, 확장적이고 공통적인건 상위 클래스에서 정의하고 그렇지 않은 것은 imterface로 하위 클래스에서 정의
- Abstract class --> Concrete class
템플릿 메소드
package designPattern.TemplateMethod;
public abstract class Coffee {
final void makeCoffee() {
putEspresso();
putIce();
putExtra();
}
private void putEspresso() {
System.out.println("에스프레소 넣기");
}
private void putIce() {
System.out.println("얼음 넣기");
}
abstract void putExtra();
}
package designPattern.TemplateMethod;
public class CoffeMain {
public static void main(String[] args) {
IceAmericano aa = new IceAmericano();
IceLatte al = new IceLatte();
aa.makeCoffee();
System.out.println("---");
al.makeCoffee();
}
}
package designPattern.TemplateMethod;
public class IceAmericano extends Coffee {
@Override
void putExtra() {
System.out.println("시럽 투하");
}
}
package designPattern.TemplateMethod;
public class IceLatte extends Coffee {
@Override
void putExtra() {
System.out.println("우유 넣기");
}
}
반응형
'Java > Design Pattern' 카테고리의 다른 글
빌더 패턴 Builder (0) | 2023.01.17 |
---|---|
컴포짓 패턴 Composite (0) | 2023.01.16 |
프로토타입 패턴 Prototype (0) | 2023.01.16 |
추상 팩토리 패턴 (0) | 2023.01.11 |
싱글톤 패턴 Singleton (0) | 2023.01.09 |