구조 (5) - 퍼사드(Facade) 패턴
- 퍼사드 : 프랑스어로 건물의 정면을 가르키는 말
- 인터페이스를 간단하게 변경하는 패턴
- 커다한 코드 부분에 대해 간략한 통합 인터페이스를 제공하는 패턴
- 인터페이스를 통해 접근함으로써 내부 코드에 대한 의존성을 줄여 준다
용어
- 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();
}
}
장점
- 서브시스템에 대한 의존성을 한 곳으로 모을 수 있다
단점
- 퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 갖게 된다