Design Pattern - Facade

JunMyung Lee·2024년 7월 29일
0

디자인패턴

목록 보기
1/3

설명

Facade 패턴은 복잡한 서브시스템에 대한 단순한 인터페이스를 제공하여, 클라이언트가 서브시스템의 복잡성을 숨기고 쉽게 사용할 수 있도록 하는 디자인 패턴입니다. 이 패턴은 코드의 가독성을 높이고 서브시스템과의 결합도를 낮추는 데 유용합니다.

구조

  • Facade: 서브시스템의 복잡한 인터페이스를 단순화하여 제공하는 클래스입니다.
  • Subsystem Classes: 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
*/
profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글