학습 목표
복잡한 과정을 간단하게 표현하는 퍼사드 패턴
사용 상황
여러 복잡한 하위 시스템을 단일 API로 묶고 싶을 때
가장 대표적인 사용 이유.
예시:
- 결제 처리
- PG 연동
- 카드사 인증
- 포인트 차감
- 쿠폰 사용
- 결제 로그 기록
이걸 각 서비스마다 따로 호출하면 복잡해짐 → PaymentFacade로 단일 메서드 제공
예제
더보기
helpSystem01 , helpSystem02, helpSystem03을 순서대로 하나에 process에서 처리하는 로직
- 각각의 System
class HelpSystem01 {
public HelpSystem01() {
System.out.println("Call COnstructor : " + getClass().getSimpleName());
}
public void process() {
System.out.println("Call Process : " + getClass().getSimpleName());
}
}
class HelpSystem02 {
public HelpSystem02() {
System.out.println("Call COnstructor : " + getClass().getSimpleName());
}
public void process() {
System.out.println("Call Process : " + getClass().getSimpleName());
}
}
class HelpSystem03 {
public HelpSystem03() {
System.out.println("Call COnstructor : " + getClass().getSimpleName());
}
public void process() {
System.out.println("Call Process : " + getClass().getSimpleName());
}
}
- Facade
public class Facade {
private HelpSystem01 helpSystem01;
private HelpSystem02 helpSystem02;
private HelpSystem03 helpSystem03;
public Facade() {
helpSystem01 = new HelpSystem01();
helpSystem02 = new HelpSystem02();
helpSystem03 = new HelpSystem03();
}
public void process() {
helpSystem01.process();
helpSystem02.process();
helpSystem03.process();
}
}
- 실행
public class Main {
public static void main(String[] args) {
Facade facade = new Facade();
facade.process();
}
}
- Facade 안에 여러가지 서비스 시스템을 실행하는 과정
마무리
보통 Web 을 개발하다 보면 Service에서 풀려고 하다 보면 비즈니스 로직들이 합쳐지면 DDD가 깨지는 상황이 옵니다. 그럴 때 Service 앞에 두어서 쓰기 좋은 것 같습니다.
'Java > 패턴' 카테고리의 다른 글
| 중재자 패턴 ( Mediator Pattern ) (0) | 2025.12.04 |
|---|---|
| 옵저버 패턴 ( Observer Pattern ) (0) | 2025.12.03 |
| 책임사슬 패턴 ( Chain of Resposibility Pattern) (0) | 2025.12.01 |
| 방문자 패턴 ( Visitor Pattern ) (0) | 2025.11.27 |
| 데코레이터 패턴 ( Decorator Pattern ) (0) | 2025.11.26 |