· 프레젠테이션 계층과 비즈니스 계층을 분리하는 데 사용된다.
- 두 계층 간의 결합을 줄이고, 서비스의 구현 세부 정보를 숨기는 역할을 한다.
· Business Delegate는 프레젠테이션 계층에서 비즈니스 객체를 호출하는 어댑터 역할을 한다.
· J2EE 디자인 패턴 중 한 종류다. https://scshim.tistory.com/448
Business Delegate Pattern 사용하기
Business Delegate Pattern의 UML 다이어 그램을 다음과 같다.
- Client: 프레젠테이션 계층으로 JSP, 서블릿 ,UI 자바 코드 등을 나타낸다.
- Business Delegate: 클라이언트 엔터티에 비즈니스 서비스 메서드에 대한 액세스를 제공하기 위한 단일 진입점 역할을 한다.
- LookUp Service: 비즈니스 구현을 가져오고, Business Delegate 객체에 대한 비즈니스 객체 액세스를 제공하는 역할을 한다.
- Business Service: 비즈니스 서비스 인터페이스로, 구체 클래스(Concrete Class)는 실제 비즈니스 구현 로직을
제공하기 위해 이 비즈니스 서비스를 구현한다.
이제 위 요소들을 포함한 예제 코드를 작성해보자. BusinessDelegatePatternDemo는 BusinessDelegate와 Client를 사용하여 Business Delegate 패턴을 설명한다.
1. BusinessService 인터페이스 만들기
public interface BusinessService {
public void doProcessig();
}
2. 구체 서비스 클래스 만들기
두 가지 종류의 구체 서비스를 생성한다.
public class EJBService implements BusinessService{
@Override
public void doProcessig() {
System.out.println("EJB 서비스를 호출하여 작업을 수행한다.");
}
}
public class JMSService implements BusinessService{
@Override
public void doProcessig() {
System.out.println("JMS 서비스를 호출하여 작업을 수행한다.");
}
}
3. 비즈니스 조회 서비스 만들기
public class BusinessLookUp {
public BusinessService getBusinessService(String serviceType){
if(serviceType.equalsIgnoreCase("EJB")){
return new EJBService();
} else {
return new JMSService();
}
}
}
4. 비즈니스 대리인(Business Delegate) 만들기
public class BusinessDelegate {
private BusinessLookUp lookUp = new BusinessLookUp();
private BusinessService businessService;
private String serviceType;
public void setServiceType(String serviceType){
this.serviceType = serviceType;
}
public void doTask(){
businessService = lookUp.getBusinessService(serviceType);
businessService.doProcessig();
}
}
5. 클라이언트 만들기
public class Client {
BusinessDelegate businessService;
public Client(BusinessDelegate businessService){
this.businessService = businessService;
}
public void doTask() {
businessService.doTask();
}
}
6. BusinessDelegate 및 Client 클래스를 사용하여 Business Delegate 패턴 보이기
public class BusinessDelegatePatternDemo {
public static void main(String[] args){
BusinessDelegate businessDelegate = new BusinessDelegate();
businessDelegate.setServiceType("EJB");
Client client = new Client(businessDelegate);
client.doTask();
businessDelegate.setServiceType("JMS");
client.doTask();
}
}
7. 결과 출력
https://www.tutorialspoint.com/design_pattern/business_delegate_pattern.htm
'자바' 카테고리의 다른 글
J2EE 디자인 패턴 - Data Access Object Pattern (0) | 2021.12.05 |
---|---|
J2EE 디자인 패턴이란? (0) | 2021.12.03 |
[Java] 자바 8에 추가/변경된 사항 (0) | 2021.09.29 |
[Java] 자바 String을 효율적으로 사용하는 방법 (StringBuilder, StringBuffer, StringJoiner, Collectors.joining) (0) | 2021.09.29 |
[Java] NIO2란? (0) | 2021.09.24 |
댓글