파사드 패턴

여러 요소들로 복잡하게 구성된 시스템을 하나의 창구로 간단하게 사용할 수 있도록 해주는 패턴

  • 인터페이스를 단순하게 변경해서 쉽게 사용하기 위함

  • 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어주는 역할

  • 파사드를 사용하면 클라이언트 구현(사용하는 부분)과 서브시스템(로직)을 분리 할 수 있다.

    • 클라이언트는 서브시스템의 내부 구현에 대해 자세히 알 필요가 없어짐

    • 파사드의 통합되고 단순한 인터페이스를 통해 필요한 기능을 수행하면됨

    • 서브시스템의 사용법이 변경되더라도 클라이언트 코드가 아닌 파사드 코드만 변경하면 되므로 유연성 향상됨

어댑터와 파사드의 차이점은 사용하는 용도에 따라 다름

  • 어댑터: 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 변환하는 용도

  • 파사드: 어떤 서브시스템에 대해 간단한 인터페이스를 제공하는 용도


1. 서브시스템 클래스

여러 기능으로 나뉘어진 클래스들을 각각 클라이언트에서 사용하는것은 번거로운 일

class FileReader {
  async readFile(filePath: string): string {}
}

class FileWriter {
  async writeFile(filePath: string, content: string): void {}
}

class FileDeleter {
  async deleteFile(filePath: string): void {}
}

2. 파사드 클래스

여러 서브시스템을 통합해서 하나의 클래스로 다루는 파사드

※ 파사드가 서브시스템의 생성 책임까지 맡아서도 가능

3. 클라이언트 코드

서브시스템의 클래스는 전혀 사용하지 않고, 파사드 클래스만 사용되어 간단해짐

Last updated