設計模式之業務代表模式(Business Delegate Pattern)
阿新 • • 發佈:2018-11-29
業務代表模式(Business Delegate Pattern)用於對錶示層和業務層解耦。它基本上是用來減少通訊或對錶示層程式碼中的業務層程式碼的遠端查詢功能。在業務層中我們有以下實體。
客戶端(Client) - 表示層程式碼可以是 JSP、servlet 或 UI java 程式碼。
業務代表(Business Delegate) - 一個為客戶端實體提供的入口類,它提供了對業務服務方法的訪問。
查詢服務(LookUp Service) - 查詢服務物件負責獲取相關的業務實現,並提供業務物件對業務代表物件的訪問
業務服務(Business Service) - 業務服務介面。實現了該業務服務的實體類,提供了實際的業務實現邏輯。
程式碼:
1.業務介面
//業務
public interface BusinessService {
void doProcessing();
}
public class EJBService implements BusinessService{
@Override
public void doProcessing() {
System.out.println("invoking EJBService...");
}
}
public class JMSService implements BusinessService{ @Override public void doProcessing() { System.out.println("invoking JMSService..."); } }
2.查詢服務(LookUp Service)
public class BusinessLookUp {
public BusinessService getBusinessService(String type) {
if("EJB".equalsIgnoreCase(type)) {
return new EJBService();
}
return new JMSService();
}
}
3.業務代表
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(); } }
4.客戶端
public class Client {
BusinessDelegate delegate;
public Client(BusinessDelegate delegate) {
super();
this.delegate = delegate;
}
public void doTask() {
delegate.doTask();
}
}
5.測試
public class Test {
public static void main(String[] args) {
BusinessDelegate delegate=new BusinessDelegate();
delegate.setServiceType("EJB");
Client client=new Client(delegate);
client.doTask();
}
}
6.結果
invoking EJBService...
7.結論
表示層和業務層解耦了,減少了通訊,提供了遠端查詢功能。
轉載於
http://www.runoob.com/design-pattern/business-delegate-pattern.html