퍼사드 패턴(Facade Pattern)
디자인패턴 2014. 11. 11. 14:251. 퍼사드 패턴이란?
퍼사드 패턴은 복잡하게 구성된 서브시스템을 단순화된 인터페이스(Interface)를 통해 클라이언트에서 더 쉽게 사용하기 위한 용도로 쓰인다.
이 패턴을 이용하면 클라이언트와 서브시스템이 서로 긴밀하게 연결되지 않아도 되고, 여러 클래스들이 복잡하게 얽혀서 시스템의 한 부분을 변경했을 때 다른 부분까지 줄줄이 고쳐야 되는 상황을 미리 방지하는 데 도움이 된다.
2. 퍼사드 패턴 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | // 복잡한 서브시스템의 기능을 단순화한 인터페이스 public class HomeTheaterFacade { // 사용하고자 하는 서브시스템의 모든 구성요소들이 Instance 변수 형태로 저장된다. 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; } // 복잡한 모든 일들을 하나의 메소드로 간단하게 처리할 수 있다. // 각 작업은 서브시스템에 들어있는 구성요소(Component)들에게 위임(Delegate)된다. 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 class HomeTheaterTestDrive { /** * @param args */ public static void main(String[] args) { // 여기에 Components를 초기화함. HomeTheaterFacade homeTheater = new HomeTheaterFacade(amp, tuner, dvd, cd, projector, screen, lights, popper); homeTheater.watchMovie( "Raiders of the Lost Ark" ); homeTheater.endMovie(); } } |
참고
Head FIrst Design Pattern : 스토리가 있는 패턴 학습법
http://www.gurubee.net/pages/viewpage.action?pageId=1507401
출처 - http://digitanomad.blogspot.kr/2013/02/facade-pattern.html
'디자인패턴' 카테고리의 다른 글
템플릿 메소드 패턴(Template Method Pattern) (0) | 2014.11.11 |
---|---|
스트래티지 패턴(Strategy Pattern) (0) | 2014.11.11 |
커맨드 패턴(Command Pattern) (0) | 2014.11.11 |
싱글턴 패턴(Singleton Pattern) (0) | 2014.11.11 |
팩토리 패턴(Factory Pattern) (0) | 2014.11.11 |