우선 파사드의 의미를 사전에서 살펴보면 다음과 같다.
1. <건축> (건물의) 정면, 전면, 파사드
2. <<비유적>> (사물의) 표면, 외관, 겉보기, 허울 (또는 facade)
위의 사전적 의미에서도 알 수 있듯이 파사드 패턴이라 함은 인터페이스를 단훈화시키기 위해서 인터페이스를 변경하는데, 하나 이상의 클래스의 복잡한 인터페이스를 깔끔하면서도, 말쑥한 파사드(겉모양, 외관등)으로 덮어주는 것이다.
파사드 패턴을 다시 한번 정의하자면, 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공함으로써 서브시스템에서 더 쉽게 사용할 수 있도록 하는 패턴이다.
그림 - 파사드 패턴
홈씨어터를 예로 들어서 설명하자면 다음과 같은 몇가지 작업을 실행해야 된다.
1. 팝콘 기계를 켠다.
2. 팝콘을 튀기기 시작한다.
3. 전등을 어둡게 조절한다.
4. 스크린을 내린다.
5. 프로젝터를 켠다.
6. 프로젝터로 DVD 신호가 입력되도록 한다.
7 프로젝터를 와이드 스크린 모드로 전환한다.
8. 앰프를 켠다.
9. 앰프의 입력을 DVD로 전환한다.
10. 앰프를 서라운드 음향 모드로 전환한다.
11. 앰프 볼륨을 중간으로 설정한다.
12. DVD 플레이를 켠다.
13. DVD 재생한다.
위와 같은 작업을 하기 위해서 사용자가 코드를 한 줄씩 모두 작업을하게 될 것이다.
만약, 이렇게 된다면 문제가 몇가지 존재하게 된다.
1. 홈씨어터의 사용법이 너무 복잡해진다.
2. 영화를 꺼야할 때는 어떻게 처리해야 할지 고민하게 된다.
3. 시스템이 업그레이드 되면 작동 방법을 배워야 한다.
이럴 때 파사드 패턴을 사용해서 복잡한 일을 간단하게 사용할 수 있다.
그림 - CD Player 구현 코드
그림 - Tuner 구현 코드
몇가지 클래스가 더 만들어져야 하지만 글이 너무 길어지기 때문에 생략한 클래스는 (Amplifier, Projecter, TheaterLight, Screen, PopcornPopper) 등이 있을 것이다.
이제 파사드 패턴을 구현한 클래스를 보도록 하자.
그림 - 파사드 패턴 클래스
위와 같이 파사드 패턴은 단순화된 인터페이스를 통해서 서브 시스템을 더 쉽게 사용할 수 있도록 하기 위한 용도로 사용된다.
덕분에 클라이언트에서는 단순한 메소드 하나만을 호출함으로 일하기도 편리하고 수원해질 수 있는 것이다.
'Basic Programming > Design Pattern' 카테고리의 다른 글
Design Pattern - 쓰레드에서 안전한 싱글턴 패턴(Thread-Safe Singleton Pattern) (0) | 2017.04.19 |
---|---|
Design Pattern - 팩토리 패턴(Factory Pattern) (0) | 2017.03.08 |
Design Pattern - 옵저버 패턴(Observer Pattern) (0) | 2017.02.18 |
Design Pattern - 핌플 이디엄(Pimpl Idiom) (0) | 2016.02.24 |
Design Pattern - 싱글턴 패턴(Singleton Pattern) (0) | 2015.12.10 |