토비스프링 공부 중에 배움
어떠한 일들이 순서대로 시행되고 일을 순서대로 유지해야하는데
일부의 일이 단계가 다를때
클래스를 추상클래스로 만들고 일부의 일만 추상메서드로 만들어서 하위 클래스에서 구현한다.
public abstract class DataProcessor {
// 템플릿 메서드
public final void process() {
loadData();
processData();
saveData();
}
protected void loadData() {
System.out.println("데이터 로딩");
}
// 변하는 부분
protected abstract void processData();
protected void saveData() {
System.out.println("데이터 저장");
}
}
public class CsvDataProcessor extends DataProcessor {
@Override
protected void processData() {
System.out.println("CSV 데이터 처리");
}
}
public class JsonDataProcessor extends DataProcessor {
@Override
protected void processData() {
System.out.println("JSON 데이터 처리");
}
}
DataProcessor processor = new CsvDataProcessor();
processor.process();
참고로 팩토리 메서드 패턴은 템플릿 메소드패턴의 한 형태이다
객체 생성 책임을 서브클래스에 위임하고 생성로직과 사용로직을 분리하는 생성 패턴
if else를 남발하지 않고 하나의 추상메서드를 활용 그리고 그 추상 메서드는 어떤 객체를 생성할지만 정의하고 각 서브 클래스가 생성 책임을 지닌다 그럼 다른 종류의 구현체라도 if else없이 한번의 코드로 구현이 가능하다