본문 바로가기
카테고리 없음

Facade pattern(퍼사드 디자인 패턴)

by ByteBridge 2015. 11. 25.
반응형

- 퍼사드 디자인 패턴이란

퍼사드란 복잡한 서브시스템에 사용하는 고수준 추상화 메소드를 모아놓은 객체

퍼사드는 서브시스템과의 동작을 단순하게 만들지만 , 클라이언트에 사용을 강요하지 않는다.


퍼사드는 복잡한 시스템에 단순한 인터페이스를 제공할 때 사용.

클라이언트와의 모든 상호 작용이 퍼사드를 통해 이루어지기 때문에 퍼사드 패턴은 서브시스템에 유연성을 부여.

퍼사드 내부에서 사용하지만 클라이언트 코드와는 관련이 없는 외부 라이브러리에 대한 의존성을 낮춘다.


- 생활에서 퍼사트 패턴

a. 컴퓨터를 켤 경우 OS 는 컴퓨터의 내부 동작을 모두 숨기고 기계에 대한 간단한 인터페이스만 사용자에게 제공한다.

b. 자동차 : 

사용자는 간단한 핸들, 가속페달 등의 인터페이스를 가지고 있지만 , 변속기와 엔진 등 자동차의 내부 동작이 정확히 어떻게 이루어지는 지 알 필요 없음.

차키를 넣고 돌릴경우, 자동차의 전자 부품이 서브 시스템에 여러 신호를 보내여 시동을 건다.

이는 시동이라는 단순한 인터페이스가 사용자에게 제공되어 가능 한 것이다.




위의 그림은 세가지 모듈을 구성하는 서브 시스템이다.

클라이언트 코드가 세 모듈을 직접 사용하면 유연성이 떨어짐.

한가지 부분이라도 수정 할경우 클라이언트 코드 역시 그에 맞춰 수정해야 하기 때문이다.

퍼사드 패턴을 사용하면 서브 시스템에 대한 호출을 하나의 함수 do_somthing 으로 합칠수있음.

퍼사드는 내부적으로 서브 모듈을 사용하여 호출 하고 클라이언트 코드에 응답을 반환.

클라이언트 코드는 이 세 모듈에 대해 아무것도 알 필요 없음.

퍼사드 do_somthing 을 호출 하고 원하는것을 받으면 된다.


- 장점

클라이언트와 서브 시스템의 연결을 느슨 하게 만든다.

서브시스템에 접근하는 인터페이스를 제공(수정 불필요)

더 단순한 인터페이스로 복잡한 서브시스템을 감싼다.

서브 시스템 구현의 유연성이 높아지고 클라이언트는 더욱 단순해짐.


반응형