퍼서드 패턴 Facade Pattern
퍼사드 패턴이란?
- 복잡한 서브 시스템 의존성을 최소화하는 패턴
- 서브 시스템에 있는 일련의 인터페이스를 하나의 인터페이스로 통합한다.
- 고수준의 인터페이스로 정의하여 서브 시스템의 세팅 과정을 생략한다. 사용하기 편하다.
- 퍼사드 패턴은 외부 코드에 대한 의존성을 줄여준다. 특정 시스템 및 라이브러리에 대한 코드를 숨긴다.
- 서브 시스템의 의존성을 한 곳에 모아 관리하기 편하다.
- 다만, 퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 가진다. 이로 인한 문제가 발생할 수 있다.
예제
- 아래와 HomeTheaterFacade은 watchMovie 를 수행하기 위한 번거롭고 복잡한 기능을 한 번에 처리한다.
public class HomeTheaterFacade {
Amplifier amp;
Tuner tuner;
StreamingPlayer player;
CdPlayer cd;
Projector projector;
TheaterLights lights;
Screen screen;
PopcornPopper popper;
public void watchMovie(String movie) {
System.out.println("Get ready to watch a movie...");
popper.on();
popper.pop();
lights.dim(10);
screen.down();
projector.on();
projector.wideScreenMode();
amp.on();
amp.setStreamingPlayer(player);
amp.setSurroundSound();
amp.setVolume(5);
player.on();
player.play(movie);
}
}
참조
- 백기선, 디자인 패턴 강의(https://www.inflearn.com/course/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4)
- O’Reilly, “헤드 퍼스트 디자인 패턴”