퍼서드 패턴 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, “헤드 퍼스트 디자인 패턴”