Java 디자인 패턴-08.Facade
(Java 디자인 패턴 스터디 모집 중 : https://github.com/bluedskim/javaDesignPatterns)
Facade 패턴 다이어그램
(출처:https://www.geeksforgeeks.org/facade-design-pattern-introduction/)
해결하려는 문제
- 클라이언트에서 다른 객체들로의 참조들을 분리하여 클라이언트의 의존성을 줄이고 복잡성을 관리.
특징/용도
- 구조적structural 디자인 패턴
- 클라이언트에 Facade라는 단순화 된, 필요한 기능만 접근할 수 있는 레이어를 추가
- 서드파티 라이브러리에 대한 직접적 의존성을 제거하여 교체를 쉽게 한다.
- facade는 캡슐화된encapsulated 블랙박스.
구성요소
- facade : target의 여러 인터페이스를 조합한 루틴이 정의된 객체
- target : 원래는 클라이언트가 직접 참조해야 하는 객체
- client : facade를 통해 target들을 사용(호출)하는 객체
고려사항
다른 유사한 패턴을 사용할 수도 있다.
- Decorator : 원래의 소스를 감싸는 방식으로 인터페이스에 동적으로 기능을 추가한다.
- Delegation : 상속을 통한 조합
- Adapter : 어떤 인터페이스를 다른 인터페이스로 변환
클래스 다이어그램
소스
- facade : ShapeMaker.java
- target : Shape.java, Circle.java, Rectangle.java, Square.java
- Shape.java
- Circle.java
- Rectangle.java
- Square.java
- client : ShapeMakerTest.java
