세 서비스 EJB의 연관된 기능을 논리적으로 묶어 퍼사드 패턴을 구현합니다(코드 3-3).
코드 3-3 무상태성 퍼사드
package com.devchronicles.facade; import javax.ejb.Stateless; import javax.inject.Inject; @Stateless public class BankServiceFacade { @Inject CustomerService customerService; @Inject LoanService loanService; @Inject AccountService accountService; public boolean getLoan(int sessionId, double amount) { boolean result = false; long id = customerService.getCustomer(sessionId); if(customerService.checkId(id)){ if(loanService.checkCreditRating(id, amount)){ if(accountService.getLoan(amount)){ result = accountService.setCustomerBalance(id, amount); } } } return result; } }
퍼사드는 다른 하위 시스템의 퍼사드를 실행할 수 있는데 이런 식으로 그들만의 로직과 실행 흐름을 캡슐화합니다. 그래서 퍼사드를 쓰면 메서드 호출의 계층 구조를 단순하게 만들 수 있지요. 하위 시스템마다 퍼사드를 하나씩 두고 그들 서로는 내부적으로 퍼사드로 소통하는 구조입니다.