Facade Pattern (퍼사드 패턴)
Facade Pattern
정의
어떤 sub-system의 interface에 대한 통합된 interface를 제공하고 facade에서 고수준 interface를 정의하기 때문에 sub-system을 쉽게 사용할 수 있다.
장점
더욱 더 간단한 interface를 만들 수 있다는 것이다.
또한 client부와 sub-system을 분리할 수도 있다.
만약 client를 facade로 만들었다고 하면 interface가 달라졌을 때 client는 변경할 필요 없이 facade만 변경하면 된다.
그리고 표면에 드러나 있는 interface를 사용하고 그 내부는 알 필요가 없다.
l 최소지식원칙(=Law of Demeter)
system design에 있어서 어떤 object든 그 object와 상호작용하는 class의 수에 주의해야 하며, object들과 어떤 식으로 상호작용하는지도 주의해야 한다는 원칙이다.
위 원칙을 지키기 위해서는 4 종류의 object의 method만 호출하면 되는데, 다음과 같다.
1. 객체 자체
2. Method에 parameter로 전달된 object
3. 그 method에서 생성하거나 instance를 만든 object
4. 그 object에 속하는 구성요소 (A has B)
Adapter Pattern, Facade Pattern, Decorator Pattern의 차이점
l Adapter Pattern : 한 interface를 다른 interface로 변환하는 것이다. Interface를 변경해서 client에서 필요로 하는 interface로 적응시키는 위한 용도로 호환성을 위한다.
l Facade Pattern : interface를 간단하게 바꾸는 것으로, 어떤 sub-system에 대한 간단한 interface를 제공하기 위한 용도로 사용되며 간편할 때 사용한다.
l Decorator Pattern : interface를 바꾸지 않고 기능만 추가하는 것으로 Object를 감싸서 새로운 기능을 추가하기 위해서 사용한다.
정리
1. 기존 class를 사용하려고 하는데 interface가 맞지 않으면 adapter pattern을 사용한다.
2. 큰 interface 또는 여러 interface를 단순화 시키거나 통합시켜야 한다면 facade pattern을 사용한다.
3. Adapter Pattern은 interface를 client가 원하는 interface로 바꾸는 역할을 하고 Facade Pattern은 복잡한 sub-system과 분리하는 역할을 한다.
4. Adapter Pattern은 다중 Adapter로 만들 수 있고 Façade Pattern은 한 sub-system에 여러 개 만들 수 있다.
'SW > DesignPattern' 카테고리의 다른 글
Iterator Pattern (반복자 패턴) (0) | 2017.09.14 |
---|---|
Template Method Pattern (템플릿메소드패턴) (0) | 2017.09.11 |
Adapter Pattern (어댑터 패턴) (0) | 2017.09.07 |
Command Pattern (커맨드 패턴) (0) | 2017.09.07 |
Singleton Pattern (싱글턴 패턴) (0) | 2017.09.05 |