二十七、业务代表模式
业务代表模式,Business Delegate Pattern,主要用于表示层与业务层的解耦。
简介
业务代表模式为客户端类,提供一个查询访问业务的接口,而不暴露过多的内部业务逻辑。
实现
创建一个客户端实体类Client
,以及业务类、服务接口和代表类。
- 创建客户端类
Client.java
/**
* Created by thinkpad on 16-12-11.
* 客户端类
*/
public class Client {
BusinessDelegate businessService;
public Client(BusinessDelegate businessService){
this.businessService = businessService;
}
public void doTask(){
businessService.doTask();
}
}
- 创建业务服务接口
IBusinessServicejava
/**
* Created by thinkpad on 16-12-11.
* 业务服务接口
*/
public interface IBusinessService {
public void doProcessing();
}
- 创建业务实现类
EJBService.java
/**
* Created by thinkpad on 16-12-11.
* 具体的业务实现类
*/
public class EJBService implements IBusinessService{
@Override
public void doProcessing() {
System.out.println("EJB服务");
}
}
JMSService.java
/**
* Created by thinkpad on 16-12-11.
* 具体的业务实现类
*/
public class JMSService implements IBusinessService{
@Override
public void doProcessing() {
System.out.println("JMS服务");
}
}
创建业务代理类
Business Delegate.java
/** * Created by thinkpad on 16-12-11. * 业务代表类 */ public class BusinessDelegate { private BusinessLookup lookupService = new BusinessLookup(); private IBusinessService businessService; private String serviceType; // public void setServiceType(String serviceType){ this.serviceType = serviceType; } // public void doTask(){ businessService = lookupService.getBusinessService(serviceType); businessService.doProcessing(); } }
业务查询类
BusinessLookup.java
/** * Created by thinkpad on 16-12-11. * 业务查询服务类 */ public class BusinessLookup { //根据选择的服务类型,返回所需服务 public IBusinessService getBusinessService(String serviceType){ if (serviceType.equalsIgnoreCase("EJB")){ return new EJBService(); }else{ return new JMSService(); } } }
演示
BusinessDelegatePatternDemo.java
/**
* Created by thinkpad on 16-12-11.
* 演示类
*/
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();
}
}
- 输出
EJB服务
JMS服务