728x90
반응형
Template Method Pattern
전체 작업의 시나리오를 정의하여 하위 클래스에서 그 시나리오가 바뀌지 않도록 할 수 있습니다. 즉 전체 일을 수행하는 구조는 바뀌지 않고 특정 단계에서 수행하는 작업은 하위 클래스에서 정의할 수 있도록 합니다.
동일한 기능을 상위 클래스에서 정의하면서 확장/ 변화가 필요한 부분만 서브 클래스에서 구현하도록 할 수 있다는 장점이 있습니다.
Template Method Patter 구현
[Computer Class]
package Java.templateMethodEx;
public abstract class Computer {
//하위 클래스에서 재정의 해야할 추상 메서드
public abstract void setting();
public abstract void clean();
//하위 클래스에서 재정의 하지 않아도 되는 메서드
public void turnOn(){
System.out.println("시스템 시작");
};
public void turnOff(){
System.out.println("시스템 종료");
};
//<템플릿 메서드 패턴>
// 이 시나리오는 변하면 안됩니다.
// 그렇기 때문에 final키워드를 적용해서
// 하위 클래스에서 재정의할 수 없도록 하였습니다.
final public void operation(){
setting();
turnOn();
turnOff();
clean();
}
}
[Desktop Class]
package Java.templateMethodEx;
public class Desktop extends Computer{
@Override
public void setting() {
System.out.println("본체에 모니터, 키보드, 마우스 연결");
System.out.println("전원 콘센트 연결");
}
@Override
public void clean() {
System.out.println("본체에 모니터, 키보드, 마우스 연결 해제");
System.out.println("전원 콘센트 뽑기");
}
}
[Laptop Class]
package Java.templateMethodEx;
public class Laptop extends Computer{
@Override
public void setting() {
System.out.println("충전기 연결");
System.out.println("노트북 열기");
}
@Override
public void clean() {
System.out.println("충전기 연결해제");
System.out.println("노트북 닫기");
}
}
[Main]
package Java.templateMethodEx;
public class Main {
public static void main(String[] args) {
Computer desktop = new Desktop();
Computer laptop = new Laptop();
System.out.println("############################");
System.out.println("desktop");
System.out.println("############################");
desktop.operation();
System.out.println("############################");
System.out.println("laptop");
System.out.println("############################");
laptop.operation();
}
}
결과
############################
desktop
############################
본체에 모니터, 키보드, 마우스 연결
전원 콘센트 연결
시스템 시작
시스템 종료
본체에 모니터, 키보드, 마우스 연결 해제
전원 콘센트 뽑기
############################
laptop
############################
충전기 연결
노트북 열기
시스템 시작
시스템 종료
충전기 연결해제
노트북 닫기
728x90
반응형
'JAVA' 카테고리의 다른 글
[Java] Thread (0) | 2022.07.29 |
---|---|
[Java] Decorator Pattern (0) | 2022.07.28 |
[Java] Singleton Pattern (0) | 2022.07.28 |
[Java] 자바 메서드가 생성되는 원리 - 가상 함수 기법 (0) | 2022.07.28 |
[Java] 메모리 관리 - 스택, 힙, Garbage Collection (0) | 2022.07.21 |