선릉역 1번 출구
8. 템플릿 메서드 패턴(template method pattern) 본문
라이브러리 vs 프레임워크
- 라이브러리: JDK, 내가 흐름을 다 정하는 것임
- 프레임워크: 안드로이드, 흐름이 다 정해져있고 내가 하는 일은 구멍을 메우는 것임
템플릿 메서드
- 추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드
- final로 선언해서 하위 클래스에서 재정의할 수 없게 함
- 중요한 흐름을 정의하고 있기 때문
- 단, 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현 하도록 함
- 프레임워크에서 많이 사용되는 설계 패턴
abstract class Car{
public abstract void drive();
public abstract void stop();
public void startCar() {
System.out.println("시동을 켭니다.");
}
public void turnOff() {
System.out.println("시동을 끕니다.");
}
final public void run(){
startCar();
drive();
stop();
turnOff();
}// 재정의하지 못하게 final로 선언
}
class ManualCar extends Car{
@Override
public void drive(){
System.out.println("사람이 운전합니다.");
System.out.println("사람이 핸들을 조작합니다.");
}
@Override
public void stop(){
System.out.println("브레이크를 밟아서 정지합니다.");
}
}
class AICar extends Car{
@Override
public void drive(){
System.out.println("AI가 운전합니다.");
System.out.println("AI가 핸들을 조작합니다.");
}
@Override
public void stop(){
System.out.println("스스로 정지합니다.");
}
}
public class Test{
public static void main (String[] args) {
Car hCar = new ManualCar();
Car aCar = new AICar();
hCar.run();
aCar.run();
}
}
'Language > Java' 카테고리의 다른 글
9. 인터페이스 (1) | 2023.11.23 |
---|---|
7. 추상 클래스 (0) | 2023.11.23 |
6. 자바의 특징 (0) | 2023.11.23 |
5. 배열의 정규화 (0) | 2023.11.21 |
4. 얕은 복사 vs 깊은 복사 (2) | 2023.11.21 |
Comments