반응형
1. 퍼사드 패턴의 정의
어떤 시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 즉 여러 클래스의 복잡한 처리과정을 하나의 인터페이스로 묶어서 사용한다.
2. 예시
영화를 보기 위해 일련의 과정 1. 팝콘 기계를 키고 튀긴다 2. 전등을 조절한다 3. 스크린을 내리고 프로젝트를 켠다 .... 같은과정을 하나의 통합 인터페이스로 묶어 실행하는 과정
HomeTheaterFacade 클래스
public class HomeTheaterFacade {
Amplifier amp;
Tuner tuner;
DvdPlayer dvd;
CdPlayer cd;
Projector projector;
TheaterLights lights;
Screen screen;
PopcornPopper popper;
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);
}
//기타 메소드
}
퍼사드 패턴을 이용하지 않았다면 Movie를 볼때의 과정을 전부 직접 호출했어야하고, 다른 과정 음악듣기 같은경우 Movie와 다른 과정으로 직접 실행해야한다 하지만 퍼사드 패턴을 이용하면 다음과 같이 실행할 수 있다.
HomeTheaterFacade homeTheater =
new HomeTheaterFacade(amp, tuner, dvd, cd,
projector, screen, lights, popper);
homeTheater.watchMovie("Raiders of the Lost Ark");
반응형
'프로그래밍 > 시큐어코딩' 카테고리의 다른 글
[디자인 패턴] 템플릿 메소드 패턴 (0) | 2020.07.15 |
---|---|
[디자인 패턴] 빌더 패턴 (0) | 2020.07.15 |
[디자인 패턴] 어댑터 패턴 (0) | 2020.07.14 |
[디자인 패턴] 커맨드 패턴 (0) | 2020.07.13 |
[디자인 패턴] 팩토리 메소드 패턴 (0) | 2020.07.13 |