• 퍼사드 : 프랑스어로 건물의 정면을 가르키는 말
  • 인터페이스를 간단하게 변경하는 패턴
  • 커다한 코드 부분에 대해 간략한 통합 인터페이스를 제공하는 패턴
  • 인터페이스를 통해 접근함으로써 내부 코드에 대한 의존성을 줄여 준다

용어

image

  • Facade : 사용자의 요청을 서브시스템에 전달하는 통합 인터페이스
  • Subsystem classes : 서브시스템 로직 클래스

구현

  • Facade
public class WashingMachine {
    private final Wash wash;
    private final Rinse rinse;
    private final Dry dry;

    WashingMachine() {
        wash = new Wash();
        rinse = new Rinse();
        dry = new Dry();
    }

    public void start() {
        wash.startWash();
        rinse.startRinse();
        dry.startDry();
    }
}
  • SubSystem
public class Wash {

  public Wash() {}

  public void startWash() {
    System.out.println("Start Washing");
  }
}

public class Rinse {

  public Rinse() {}

  public void startRinse() {
    System.out.println("Start Rinsing");
  }
}

public class Dry {

  public Dry() {}

  public void startDry() {
    System.out.println("Start Drying");
  }
}
  • Client
public class Main {

    public static void main(String[] args) {
        WashingMachine machine = new WashingMachine();
        machine.start();
    }
}

장점

  1. 서브시스템에 대한 의존성을 한 곳으로 모을 수 있다

단점

  1. 퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 갖게 된다