복잡한 여러개의 Interface를 단순화하기 위한 Pattern.
하나이상의 Class의 복잡한 interface를 단순한 Facade로 덮어주는 Pattern.
용도에 따른 변경에 주안점을 주게 된다 : 하나의 복잡한 일을 하는 것에 대한 쉬운 접근 방법의 제공
단순화된 인터페이스를 제공하면서도, 클라이언트에서 필요로 한다면 sub class의 모든 기능을 제공할 수 있어야지 된다.
public interface IHomeTheaterFacade
{
void TurnOnMovie();
void TurnOffMovie();
}
public class HomeTheaterFacade : IHomeTheaterFacade
{
object amp;
object tuner;
object dvdPlayer;
object dvd;
object projector;
object screen;
public HomeTheaterFacade(object amp, object tuner, object dvdPlayer, object dvd, object projector, object screen)
{
this.amp = amp;
this.tuner = tuner;
this.dvdPlayer = dvdPlayer;
this.dvd = dvd;
this.projector = projector;
this.screen = screen;
}
#region IHomeTheaterFacade Members
public void TurnOnMovie()
{
//Note : Do some thing
}
public void TurnOffMovie()
{
//Note : Do some thing
}
#endregion
}