业务代表模式不太好理解,建单梳理一下。
BusinessService 是一个业务的接口,它有两个业务实现EBJService和JMSService
BusinessLookUp是一个业务查找类,根据你提供的字段返回不同的业务
BusinessDelegate 是把传进来的参数和调用业务方法整合到一个类里面了,也就是做了一个封装。
Client就干了两件事:1 根据构造函数传入BusinessDelegate实例,2. 调用BusinessDelegate的执行方法
下面看代码
public interface BusinessService { public void doProcessing(); }
public class EJBService implements BusinessService { @Override public void doProcessing() { System.out.println("Processing task by invoking EJB Service"); } }
public class JMSService implements BusinessService { @Override public void doProcessing() { System.out.println("Processing task by invoking JMS Service"); } }
public class BusinessLookUp { public BusinessService getBusinessService(String serviceType){ if(serviceType.equalsIgnoreCase("EJB")){ return new EJBService(); }else { return new JMSService(); } } }
public class BusinessDelegate { private BusinessLookUp lookupService = new BusinessLookUp(); private BusinessService businessService; private String serviceType; public void setServiceType(String serviceType){ this.serviceType = serviceType; } public void doTask(){ businessService = lookupService.getBusinessService(serviceType); businessService.doProcessing(); } }
public class Client { BusinessDelegate businessService; public Client(BusinessDelegate businessService){ this.businessService = businessService; } public void doTask(){ businessService.doTask(); } }
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(); } }
Processing task by invoking EJB Service
Processing task by invoking JMS Service