Template Method 패턴은 상위 클래스에서 알고리즘의 구조를 정의하고, 하위 클래스에서 알고리즘의 특정 단계를 구현하도록 하는 디자인 패턴입니다. 이 패턴은 코드 재사용성을 높이고 알고리즘의 변하지 않는 부분과 변할 수 있는 부분을 분리하는 데 유용합니다.
// AbstractClass
abstract class DataProcessor {
// Template method
public final void process() {
readData();
processData();
saveData();
}
// Abstract methods to be implemented by subclasses
abstract void readData();
abstract void processData();
// Concrete method
void saveData() {
System.out.println("Saving data to database...");
}
}
// ConcreteClass
class TextDataProcessor extends DataProcessor {
@Override
void readData() {
System.out.println("Reading data from text file...");
}
@Override
void processData() {
System.out.println("Processing text data...");
}
}
// ConcreteClass
class ExcelDataProcessor extends DataProcessor {
@Override
void readData() {
System.out.println("Reading data from Excel file...");
}
@Override
void processData() {
System.out.println("Processing Excel data...");
}
}
// Client
public class Main {
public static void main(String[] args) {
DataProcessor textProcessor = new TextDataProcessor();
textProcessor.process();
DataProcessor excelProcessor = new ExcelDataProcessor();
excelProcessor.process();
}
}
/*
Reading data from text file...
Processing text data...
Saving data to database...
Reading data from Excel file...
Processing Excel data...
Saving data to database...
*/