도찐개찐

[코드디자인패턴-JAVA] Facade Pattern 본문

프로그래밍/코드디자인패턴

[코드디자인패턴-JAVA] Facade Pattern

도개진 2024. 2. 29. 09:35

Facade Pattern

사용시점

  1. 복잡한 시스템에 단순한 인터페이스가 필요할 때
  2. 여러 서브시스템 감의 종속성이 복잡하게 얽혀 있을 때
  3. 클라이언트가 서브시스템의 내부 구조를 몰라도 되게 하고 싶을 때

결론

1. 복잡한 시스템의 일부분에 대한 통합된 인터페이스를 제공하는 구조 패턴
2. 클라이언트와 복잡한 시스템 간의 상호작용을 단순화
3. 클라이언트가 시스템의 세부 구조를 몰라도 되게끔 합니다.
// 서브 시스템 클래스
public class FileReader {
    public void readFile(String fileName) {
        System.out.println("Reading file: " + fileName);
    }
}

public class FileWriter {
    public void writeFile(String fileName) {
        System.out.println("Writing file: " + fileName);
    }
}

public class FileDeleter {
    public void deleteFile(String fileName) {
        System.out.println("Deleting file: " + fileName);
    }
}
// 파사드 클래스
public class FileManager {
    private FileReader fileReader;
    private FileWriter fileWriter;
    private FileDeleter fileDeleter;

    public FileManager() {
        fileReader = new FileReader();
        fileWriter = new FileWriter();
        fileDeleter = new FileDeleter();
    }

    public void read(String fileName) {
        fileReader.readFile(fileName);
    }

    public void write(String fileName) {
        fileWriter.writeFile(fileName);
    }

    public void delete(String fileName) {
        fileDeleter.deleteFile(fileName);
    }
}
// 클라이언트 코드
public class Main {
    public static void main(String[] args) {
        FileManager fileManager = new FileManager();
        fileManager.read("test.txt");
        fileManager.write("test.txt");
        fileManager.delete("test.txt");
    }
}

Main.main(null)
Reading file: test.txt
Writing file: test.txt
Deleting file: test.txt

예제에서 FileManager 클래스가 파사드 역할을 하며, 복잡한 파일 작업을 간단한 메서드로 제공합니다.

클라이언트 코드는 FileManager를 통해 서브시스템과 상호작용하며, 서브시스템의 내부 복잡성을 알 필요가 없습니다.

대표 사례

  • 운영체제의 파일 시스템: 파일 시스템의 복잡한 동작을 간단한 메서드로 제공하고, 사용자가 복잡한 파일 관리를 몰라도 되게하는 파사드 역할을 할 수 있습니다.
  • 데이터베이스 연결: 데이터베이스와의 연결, 쿼리 실행, 결과처리든 복잡한 과정을 간단한 인터페이스로 제공하고, 클라이언트가 세부사항을 몰라도 되게 할 수 있습니다.
728x90
Comments