퍼사드 패턴

서브 클래스의 통합 인터페이스를 제공하는 패턴입니다.

실제 적용 예시

  • 회사의 서비스데스크 라던가, 내부 구조를 모른 상태에서 서비스를 이용하기위해서 통합 인터페이스를 제공하는것을 예시로 들수 있습니다.
class VideoFile {
    ...
}

class OggCompressionCodec {
    ...
}

class CodecFactory {
    ...
}

export class FacadeVideoConverter {
    private part1: VideoFile = new VideoFile();
    private part2: OggCompressionCodec = new OggCompressionCodec();
    private part3: Part3 = new Part3();

    public convert(): void {
        console.log("`operation1` is called ===");
        this.part1.method1();
        this.part2.method2();
        console.log("==========================");
    }
}

언제 사용할까 ?

어떤 기능에 대해서 하위 절차나 구현을 감추고 싶고, 복잡함을 클라이언트입장에선 몰라도 되게 하고 싶을때 사용하세요. 하위 시스템을 계층 구조로 구성하는 경우 좋습니다.

장점

  • 쓰는사람(클라이언트)입장에서는 내부 구현의 복잡도를 모르고 사용할수 있습니다.

단점

  • 퍼사드앱이 너무 결합도가 높아서 유지보수 하기 힘들수도 있습니다.