Facade 패턴은 복잡한 서브시스템에 대한 단순한 인터페이스를 제공하여, 클라이언트가 서브시스템의 복잡성을 숨기고 쉽게 사용할 수 있도록 하는 디자인 패턴입니다. 이 패턴은 코드의 가독성을 높이고 서브시스템과의 결합도를 낮추는 데 유용합니다.
// 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();
}
}
/*
CPU started
HardDrive reading 1024 bytes from LBA 0
Memory loaded at position 0
CPU executing instructions
CPU stopped
*/