设计模式之业务代表模式

业务代表模式(Business Delegate Pattern)用于对表示层和业务层的解耦,它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务中我们有以下实体。

  • 客户端(Client)-表示层代码可以是UI java代码
  • 业务代表(Business Delegate)-一个为客户端实体提供的入口类,它提供了对业务服务方法的访问
  • 查询服务(LookUp Service)-查找服务对象负责获取相关的业务实现,并提供业务服务方法的访问
  • 业务服务 (Business Service)-查询服务接口,实现了该业务服务的实体类,提供了实际的业务实现逻辑

实现

步骤一

创建BusinessService接口
BusinessService.java

1
2
3
public interface BusinessService{
public void doProcessing();
}

步骤二

创建实体服务类
EJBService.java

1
2
3
4
5
6
7
public class EJBService implements BusinessService{

@Override
public void doProcessing(){
System.out.print("Peocessing task by invoking EJB Service")
}
}

JMSService.java

1
2
3
4
5
6
7
pubilc class JMSService implements BusinessService{

@Override
public void doProcessing(){
System.out.print("Peocessing task by invoking JMS Service")
}
}

步骤三

创建业务查询服务
BusinessLookUp.java

1
2
3
4
5
6
7
8
9
public class BusinessLookUp{
public BusinessService getBusinessService(String serviceType){
if(serviceType.equalsIgnoreCase("EJB")){
return new EJBService();
}else{
return new JMSService();
}
}
}

步骤四

创建业务代表
BusinessDelegate.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class BusinessDelegate{
private BusinessLookUp lookUpService = new BusinessLookUp()
private BusinessService businessService;
private String serviceType;

public vcid setServiceType(String serviceType){
this.serviceType = serviceType;
}

public void doTask(){
businessService = lookUpService.getBusinessService(serviceType);
businessService.doProcessing();
}
}

步骤五

创建客户端
Client.java

1
2
3
4
5
6
7
8
9
10
pubilc class Client{
private BusinessDelegate businessDelegate;

public Client(BusinessDelegate businessDeegate){
this.businessDelegate = businessDelegate;
}
public void doTask(){
businessDelegate.doTask();
}
}

步骤六

使用businessDelegate和Client类演示业务代表模式
BusinessDelegatePatternDemo.java

public class BusinessDelegatePatternDemo{
public static void main(Stirng[] args){

BusinessDelegate businessDelegate = new BusinessDelegate();
businessDelegate.setServiceType(“EJB”)

Client client =new Client(businessDelegate);
client.doTask();

businessDelegate.setServiceType(“JMS”)
client.doTask();
}
}

步骤七

验证输出

1
2
Processing task by invoking EJB Service
Processing task by invoking JMS Service

坚持原创技术分享,您的支持将鼓励我继续创作!