디자인 패턴/구조 패턴
Facade 패턴
언린이
2021. 10. 5. 09:36
Facade 패턴은 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. Facade 클래스에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.
구조
- Facade
- Facade 클래스는 Subsystem 클래스들을 혼합하여 Client가 요청할 수 있는 간단한 메서드를 제공합니다.
- Client
- Subsystem 클래스 내의 리소스에 접근하기 위해 Facade 클래스를 사용하는 객체입니다.
- Subsystem
- 소프트웨어 라이브러리/API의 집합입니다. Facade 클래스를 통해 접근됩니다.
활용 상황
- 복잡한 Subsystem에 대해 간단한 인터페이스를 제공하고자 할때 유용합니다.
- Client와 구현 클래스 사이에 또는 Subsystem과 다른 Subsystem들 사이에 의존관계가 많을 경우에 이를 감소시킬때 유용합니다.
Facade 패턴의 장단점
- 장점
- Subsystem 간의 결합도를 낮출 수 있습니다.
- Client 입장에서 Subsystem을 사용해야 할때 다루어야 할 객체의 수를 줄여줍니다.
- 클라이언트 입장에서 좀 더 간결하게 코드를 알아볼 수 있게 해줍니다.
- 단점
- Client에게 내부 Subsystem까지 숨길 수 없습니다.
- Client가 Subsystem 내부의 클래스를 직접 사용하는 것을 막을 수 없습니다.
- Client에게 내부 Subsystem까지 숨길 수 없습니다.