퍼사드 패턴(Facade Pattern)
1. 목적
- 서브시스템에 있는 여러 개의 인터페이스를 통합하는 한개의 인터페이스를 제공한다.
- 퍼사드는 서브 시스템을 쉽게 사용할 수 있도록 해주는 고급 수준의 인터페이스를 정의한다.
2. 패턴 요소
요소 | 설명 |
이름 | 퍼사드(Facade) |
문제 | 서브시스템이 너무 많고 사용하기가 복잡한 문제 |
해결방안 | 단순한 인터페이스를 제공하는 객체를 중간에 넣는다 |
결과 | 최소 지식 원칙에 입각해서 의존성을 최소화 시킨다. |
3. 사례
package smu_2;
public class HomeTheaterFacade {
private Amplifier amp;
private Tuner tuner;
private DvdPlayer dvd;
private CdPlayer cd;
private Projector projector;
private TheaterLights lights;
private Screen screen;
private PopcornPopper popper;
public HomeTheaterFacade(Amplifier a, Tuner t, DvdPlayer d, CdPlayer c,
Projector p, Screen s, TheaterLights l, PopcornPopper pp) {
this.amp = a;
this.tuner = t;
this.dvd = d;
this.cd = c;
this.projector = p;
this.lights = l;
this.screen = s;
this.popper = pp;
}
}
package smu_2;
public class 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.setVolume(5);
dvd.on();
dvd.play(movie);
public void endMoive() {
System.out.println("Shutting movie theater down...");
project.off();
popper.off();
lights.on();
screen.up();
projector.off();
amp.off();
dvd.stop();
dvd.eject();
dvd.off();
}
/*기타 메소드...*/
}
package smu_2;
public class HomeTheaterTestDrive {
public static void main(String[] args) {
HomeTheaterFacade homeTheater
= new HomeTheaterFacade(amp,tuner,dvd,cd,
projector,screen,lights,popper);
homeTheater.watchMovie("Raiders of the Lost Ark");
homeTheater.endMovie();
}
}
4. 퍼사드 패턴의 정의
'Java > 고급객체지향' 카테고리의 다른 글
스테이트 패턴(State Pattern) (0) | 2021.12.12 |
---|---|
고급객체지향 프로그래밍 - 커맨드 패턴(Command Pattern) (0) | 2021.12.12 |
고급객체지향 프로그래밍 - 어댑터 패턴(Adapter Pattern) (0) | 2021.12.12 |
고급객체지향 프로그래밍 - 다오 패턴(DAO Pattern) (0) | 2021.12.12 |
고급객체지향 프로그래밍 - 싱글턴 패턴(Singleton Pattern), 반복자 패턴(Iterator Pattern) (0) | 2021.10.19 |