-
Notifications
You must be signed in to change notification settings - Fork 0
퍼사드 패턴 (Facade pattern)
VG edited this page Jan 7, 2021
·
1 revision
인터페이스를 단순화시킬 뿐 아니라 클라이언트와 구성요소들로 이루어진 서브시스템을 분리시켜주는 패턴 출처: Head First Design Patterns
쉽게 말해, 여러가지 기능들을 한 메소드로 잘 포장해두는 것이다.
출처: 위키피디아
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 object WatchMovie(string movie)
{
StringBuilder watchMovieString = new StringBuilder();
watchMovieString.Append("Get ready to watch a movie...\n");
watchMovieString.Append(popper.On());
watchMovieString.Append(popper.Pop());
watchMovieString.Append(lights.Dim(10));
watchMovieString.Append(screen.Down());
watchMovieString.Append(projector.On());
watchMovieString.Append(projector.WideScreenMode());
watchMovieString.Append(amp.On());
watchMovieString.Append(amp.SetDvd(dvd));
watchMovieString.Append(amp.SetSurroundSound());
watchMovieString.Append(amp.SetVolume(5));
watchMovieString.Append(dvd.On());
watchMovieString.Append(dvd.Play(movie));
return watchMovieString.ToString();
}
public object EndMovie()
{
StringBuilder endMovieString = new StringBuilder();
endMovieString.Append("Shutting movie theater down...\n");
endMovieString.Append(popper.Off());
endMovieString.Append(lights.On());
endMovieString.Append(screen.Up());
endMovieString.Append(projector.Off());
endMovieString.Append(amp.Off());
endMovieString.Append(dvd.Stop());
endMovieString.Append(dvd.Eject());
endMovieString.Append(dvd.Off());
return endMovieString.ToString();
}
public object ListenToCd(string cdTitle)
{
StringBuilder listenToCdString = new StringBuilder();
listenToCdString.Append("Get ready for an audio experence...\n");
listenToCdString.Append(lights.On());
listenToCdString.Append(amp.On());
listenToCdString.Append(amp.SetVolume(5));
listenToCdString.Append(amp.SetCd(cd));
listenToCdString.Append(amp.SetStereoSound());
listenToCdString.Append(cd.On());
listenToCdString.Append(cd.Play(cdTitle));
return listenToCdString.ToString();
}
public object EndCd()
{
StringBuilder endCdString = new StringBuilder();
endCdString.Append("Shutting down CD...\n");
endCdString.Append(amp.Off());
endCdString.Append(amp.SetCd(cd));
endCdString.Append(cd.Eject());
endCdString.Append(cd.Off());
return endCdString.ToString();
}
public object ListenToRadio(double frequency)
{
StringBuilder listenToRadioString = new StringBuilder();
listenToRadioString.Append("Tuning in the airwaves...\n");
listenToRadioString.Append(tuner.On());
listenToRadioString.Append(tuner.SetFrequency(frequency));
listenToRadioString.Append(amp.On());
listenToRadioString.Append(amp.SetVolume(5));
listenToRadioString.Append(amp.SetTuner(tuner));
return listenToRadioString.ToString();
}
public object EndRadio()
{
StringBuilder endRadioString = new StringBuilder();
endRadioString.Append("Shutting down the tuner...\n");
endRadioString.Append(tuner.Off());
endRadioString.Append(amp.Off());
return endRadioString.ToString();
}
}
여러 출처를 바탕으로 최대한 오류를 범하지 않도록 작성하였으나, 이 페이지를 작성하는 저 또한 해당 학문을 공부하는 학생입니다.
∴해당 페이지의 정보를 맹신하지 마시길 바랍니다.
-
생성 패턴
-
구조 패턴
- 데코레이터 패턴 (Decorator pattern)
- 어댑터 패턴 (Adapter pattern)
- 퍼사드 패턴 (Facade pattern)
- 프록시 패턴 (Proxy pattern)
- 이터레이터, 컴포지트 패턴 (Iterator, Composite pattern)
-
동작 패턴
- 옵저버 패턴 (Observer pattern)
- 템플릿 메소드 패턴 (Template pattern)
- 커맨드 패턴 (Command pattern)
- 스트래티지 패턴 (Strategy pattern)
- 스테이트 패턴 (State pattern)
-
기타 패턴
- 컴파운드 패턴 (Compound pattern)
- 메소드 체이닝 (Method chaining)
- Dispose 패턴 (Dispose pattern)