템플릿 메서드
- 추상 메서드나 구현된 메서드를 활용해서 코드의 흐름(시나리오)를 정의하는 메서드이며 전체 일을 수행하는 구조를바꾸지 않으면서 특정 단계 수행 내역을 바꾸는 패턴을 의미한다.
- final 키워드로 선언해 자식 클래스에서 오버라이딩 할 수 없게 만든다.
- 프레임워크에서 많이 사용하는 설계 패턴이며 추상 클래스로 선언된 부모 클래스에서 템플릿 메서드를 활용해 흐름을 정의하고 자식 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언해 자식 클래스에서 오버라이딩하도록 한다.
예제
package com.it.abstractClass;
public 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();
}
}
부모클래스
package com.it.abstractClass;
public class AICar extends Car {
@Override
public void drive() {
System.out.println("자동차가 스스로 자율 주행합니다.");
System.out.println("자동차가 스스로 방향을 변경합니다.");
}
@Override
public void stop() {
System.out.println("자동차가 스스로 멈춥니다.");
}
@Override
public void startCar() {
System.out.println("시동작동중");
}
public static void main(String[] args) {
AICar granger = new AICar();
ManualCar sonata = new ManualCar();
granger.run();
sonata.run();
}
}
부모클래스를 상속받는 자식클래스
특징
- 상속과 오버라이딩을 통한 다형성으로 문제를 해결한다.
- 코드중복 감소 및 객체 추가 및 확장을 쉽게 가능하도록 한다.
- 자식 클래스의 역할을 감소시키면서 핵심 로직 관리가 용이하다.
- 추상 클래스와 구현 클래스간 복잡성이 증대되며 추상 메서드가 많아지면 관리가 복잡해진다.
- 상속으로 인해 부모클래스 즉 추상클래스의 의존성이 증대된다.
'JAVA > JAVA2' 카테고리의 다른 글
[java2] #40 - Generic (제네릭) (0) | 2022.11.30 |
---|---|
[java2] #39 - TreeSet, TreeMap (0) | 2022.11.27 |
[java2] #37 - extends, Override, super (0) | 2022.11.24 |
[java2] #36 - PrintWriter (Text File Write Test) (0) | 2022.11.23 |
[java2] #35 - StringTokenizer, DecimalFomat Class (0) | 2022.11.23 |