일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- C
- 운영체제
- 디자인 패턴
- 알고리즘
- 네트워크
- react
- 백준
- OS
- Java
- spring webflux
- Kafka
- redis
- mongoDB
- Proxy
- c언어
- Galera Cluster
- JavaScript
- design pattern
- MySQL
- Spring
- 컴퓨터구조
- IT
- Heap
- 자료구조
- 자바
- JPA
- Data Structure
- MSA
- Algorithm
Archives
- Today
- Total
시냅스
템플릿 메소드 패턴 Java로 구현 본문
템플릿 메소드 패턴 Template Method Pattern
- 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스에 위임
- Operation 에 알고리즘의 기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에 정의한다
- 추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함으로써 템플릿 메소드의 처리순서를 정할 수 있다.
AbstractClass
- 서브 클래스들이 반드시 구현해야 하는 알고리즘 처리 단계 내의 기본 오퍼레이션이 무엇인지를 정의한다.
- 서브 클래스에서 이들 오퍼레이션들을 구현한다.
- Hook method : 추상 클래스 내에 선언(declaration)되어 있는 메소드이지만, 기본적인 내용만 있거나 아무 내용도 들어있지 않음
- template method는 final 키워드를 통해 변경되지 못하도록 한다.
ConcreteClass
- 상위 클래스에서 선언된 추상 메서드를 구현하거나 이미 구현된 메서드를 재정의한다
구현
package templatemethod;
abstract class Car {
public void startCar(){
System.out.println("시동을 켭니다.");
}
public abstract void drive();
public abstract void stop();
public void turnOff(){
System.out.println("시동을 끕니다.");
}
public final void run() { // template method
startCar();
drive();
stop();
turnOff();
}
}
class AICar extends Car {
@Override
public void drive() {
System.out.println("자율주행합니다.");
}
@Override
public void stop() {
System.out.println("자동차가 스스로 방향을 바꿉니다.");
}
}
class ManualCar extends Car {
@Override
public void drive() {
System.out.println("사람이 운전합니다.");
}
@Override
public void stop() {
System.out.println("브레이크를 밟아서 정지합니다.");
}
}
public class TemplateMethodImpl {
public static void main(String[] args) {
AICar aiCar = new AICar();
aiCar.run();
System.out.println("============");
ManualCar manualCar = new ManualCar();
manualCar.run();
}
}
'디자인 패턴' 카테고리의 다른 글
이터레이터 패턴 Java로 구현 (0) | 2022.08.17 |
---|---|
옵저버 패턴 Java로 구현 (0) | 2022.08.17 |
전략 패턴 Strategy Pattern - Java로 구현 (0) | 2022.08.02 |
State Pattern - java로 구현 (0) | 2022.08.02 |
데코레이터 패턴, Decorator Pattern Java로 구현 (0) | 2022.07.25 |
Comments