일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- OneToMany
- openjdk
- chroot exit code
- mybatis
- ManyToOne
- SpringBoot
- 활성프로브
- exit code
- MaxRAMPercentage
- ManyToMany
- Design Pattern
- 변경 감지
- 다중 트랜잭션
- docker
- OneToOne
- OracleJDK
- Entity
- JPA
- Multi Transaction
- JDK
- K8s
- 트랜잭션 쓰기 지연
- dirty check
- Multi Datasource
- Java
- 영속화
- 다중 데이타소스
- 디자인 패턴
- SpringBoot 2.0
- 종료코드
- Today
- Total
조금 평범한 개발 이야기
파사드 패턴 본문
개요
파사드 (FACADE) 패턴은 여러 인터페이스를 가지는 객체들에서 간단하고 구체적인 형태의 인터페이스를 제공하고자 할때 사용 됩니다.
예를 들어 A 클래스와 B 클래스에 있는 인터페이스를 조합해 Facade 클래스에서 새로운 인터페이스 제공 하는 형태로 구성 할때 사용 됩니다.
Facade 클래스에서는 흐름을 제어하기 위한 비지니스 로직이 일정 부분 포함 될 수 있습니다.
설명
파사드 패턴은 일정 부분 프록시 (PROXY) 패턴과 유사해 보일 수도 있는데요. 프록시 패턴은 대상 클래스와 동일한 인터페이스를 제공하고 요청 받으면 바로 대상 클래스에게 전달 하는 형태로 구성 됩니다.
하지만 파사드 패턴은 대상 클래스의 인터페이스를 조합하여 일련의 흐름을 제공하는 비지니스 로직을 포함 하는 새로운 인터페이스를 제공 한다는 점에서 차이점이 있습니다.
클래스 다이어그램을 확인해 보겠습니다. 먼저 Waiter 는 Customer 로 부터 주문(order)을 받습니다. 그러면 Waiter 내부적으로 Chef 와 Bartender 에게 Dish 를 전달 받아 Customer 에게 제공 합니다.
Waiter 는 Chef 가 제공하는 cooking 인터페이스와 Bartender 가 제공하는 bartending 인터페이스를 사용하지 않고 별도로 만든 order 인터페이스를 이용해 이 둘을 호출하는 것을 볼 수 있습니다.
파사드 패턴은 이처럼 구현에 대한 세부적인 클래스의 복잡한 인터페이스를 노출하지 않고 단순한 인터페이스를 제공해 줌으로서 파사드와 호출하는 쪽의 관계를 유연하게 구성할 수 있게 해줍니다.
정리
- 파사드 패턴은 A 클래스와 B 클래스에 있는 인터페이스를 조합해 Facade 클래스에서 새로운 인터페이스 제공 하는 형태로 구성 할때 사용 됩니다.
- 파사드 패턴은 세부적인 구현의 인터페이스를 노출하지 않고 간단하고 구체적인 인터페이스를 제공해 줌으로서 호출하는 쪽의 관계를 유연하게 구성할 수 있게 해줍니다.