본문 바로가기
자바

J2EE 디자인 패턴 - Business Delegate Pattern

by 책 읽는 개발자_테드 2021. 12. 3.
반응형

· 프레젠테이션 계층과 비즈니스 계층을 분리하는 데 사용된다.

   - 두 계층 간의 결합을 줄이고, 서비스의 구현 세부 정보를 숨기는 역할을 한다.

 

· 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)는 실제 비즈니스 구현 로직을

  제공하기 위해 이 비즈니스 서비스를 구현한다.

 

https://www.tutorialspoint.com/design_pattern/business_delegate_pattern.htm

 

이제 위 요소들을 포함한 예제 코드를 작성해보자. 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

https://en.wikipedia.org/wiki/Business_delegate_pattern

반응형

댓글