어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사이드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용 할 수 있다.
단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기 위한 용도로 쓰인다.
다음 코드는 다양한 홈시어터 콤포넌트들의 조작을 하나의 단순화된 인터페이스를 통해서 콘트롤을 하는 Façade 코드이다.
package headfirst.facade.hometheater;
public class HomeTheaterFacade { // 구성부분 : 우리가 사용하고자하는 서브시스템의 모든 구성요소들이 인스턴스 변수형태로 저장된다.Amplifier amp; Tuner tuner; DvdPlayer dvd; CdPlayer cd; Projector projector; TheaterLights lights; Screen screen; PopcornPopper popper; // Facade의 생성자에는 서브시스템의 각 구성요소의 레퍼런스가 전달된다. // Facade에서는 각 레퍼런스를 인스턴스 변수에 저장한다. public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, CdPlayer cd, Projector projector, Screen screen, TheaterLights lights, PopcornPopper popper) {
this.amp = amp; this.tuner = tuner; this.dvd = dvd; this.cd = cd; this.projector = projector; this.screen = screen; this.lights = lights; this.popper = 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.setDvd(dvd); amp.setSurroundSound(); amp.setVolume(5); dvd.on(); dvd.play(movie); }
public void endMovie() { System.out.println("Shutting movie theater down..."); popper.off(); lights.on(); screen.up(); projector.off(); amp.off(); dvd.stop(); dvd.eject(); dvd.off(); }
public void listenToCd(String cdTitle) { System.out.println("Get ready for an audiopile experence..."); lights.on(); amp.on(); amp.setVolume(5); amp.setCd(cd); amp.setStereoSound(); cd.on(); cd.play(cdTitle); }
public void endCd() { System.out.println("Shutting down CD..."); amp.off(); amp.setCd(cd); cd.eject(); cd.off(); }
public void listenToRadio(double frequency) { System.out.println("Tuning in the airwaves..."); tuner.on(); tuner.setFrequency(frequency); amp.on(); amp.setVolume(5); amp.setTuner(tuner); }
public void endRadio() { System.out.println("Shutting down the tuner..."); tuner.off(); amp.off(); } }
|
'Java Design Pattern' 카테고리의 다른 글
Observer 패턴 (0) | 2013.02.20 |
---|---|
Strategy 패턴 - 알고리즘을 사용하는 클라이언트와 독립적으로 구현 (0) | 2013.02.20 |
Adapter 패턴 (0) | 2013.02.19 |
Command 패턴 (0) | 2013.02.19 |
Singleton 패턴 (0) | 2013.02.19 |