read
fa·cade, ->ade, 〕〔Fn. (건물의) 정면(front), (접해 있는) 면;겉보기, 외관, 허울

 

Facade 패턴은 서브시스템을 블랙박스 형태로 다루고자 할 때 유용합니다. 단어의 뜻에서도 알 수 있듯이 껍데기만 알고 그 속에 대해서는 알고 싶지 않을 때 씁니다. 객체지향에서 쓰이는 encapsulation 하고 비슷합니다. 다만 encapsulation 은 연산들을 숨기는 데 반해 Facade 패턴은 여러 클래스들을 포함한 서브시스템을 숨긴다는 것이 다릅니다.

 

[caption id="attachment_4644" align="alignnone" width="511" caption="Facade Pattern"]http://en.wikipedia.org/wiki/File:FacadeDesignPattern.png[/caption]

위 그림에서도 볼 수 있듯이 하위 패키지들을 다루는 일을 Facade 클래스가 담당하고 Client 클래스에서는 Facade 의 인터페이스만을 이용합니다. Client 코드가 간결해지는 효과가 있을 수 있겠지요.

 

펀드매니저를 한번 생각해 볼까요? 우리는 펀드매니저가 주식에 투자를 하는 지 채권에 투자를 하는 지 아니면 카지노에 가서 돈을 불려 오는 지 모릅니다. 다만 펀드매니저에게 재테크() 라는 명령을 할 뿐이지요. 여기서 펀드매니저 클래스가 바로 위의 Facade 클래스가 되고 주식, 채권, 도박 등이 위 그림의 Class1, Class2, Class3 에 해당합니다.

 

Facade 패턴은 굳이 이름을 붙여 부르지 않아도 누구나 이미 만들어 본 경험이 있을 겁니다. 경계를 나누고 정리하고자 하는 욕구는 자연스러운 것이니까요. 참 익숙하고 쉬운 패턴이지만, 딱 하나 발음만 주의하시면 됩니다. 퍼사드 패턴 입니다.

Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview