標籤:
業務代表模式(Business Delegate Pattern)用於對錶示層和業務層解耦。它基本上是用來減少通訊或對錶示層代碼中的業務層代碼的遠程查詢功能。在業務層中我們有以下實體。
- 用戶端(Client) - 展示層代碼可以是 JSP、servlet 或 UI java 代碼。
- 業務代表(Business Delegate) - 一個為用戶端實體提供的入口類,它提供了對商務服務方法的訪問。
- 查詢服務(LookUp Service) - 尋找服務物件負責擷取相關的業務實現,並提供業務對象對業務代表對象的訪問。
- 商務服務(Business Service) - 商務服務介面。實現了該商務服務的實體類,提供了實際的業務實現邏輯。
實現
我們將建立 Client、BusinessDelegate、BusinessService、LookUpService、JMSService 和 EJBService 來表示業務代表模式中的各種實體。
BusinessDelegatePatternDemo,我們的示範類使用 BusinessDelegate 和 Client 來示範業務代表模式的用法。
步驟 1
建立 BusinessService 介面。
public interface BusinessService { public void doProcessing();}
步驟 2
建立實體服務類。
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"); }}
步驟 3
建立業務查詢服務。
public class BusinessLookUp { public BusinessService getBusinessService(String serviceType){ if(serviceType.equalsIgnoreCase("EJB")){ return new EJBService(); }else { return new JMSService(); } }}
步驟 4
建立業務代表。
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(); }}
步驟 5
建立用戶端。
public class Client { BusinessDelegate businessService; public Client(BusinessDelegate businessService){ this.businessService = businessService; } public void doTask(){ businessService.doTask(); }}
步驟 6
使用 BusinessDelegate 和 Client 類來示範業務代表模式。
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
驗證輸出。
Processing task by invoking EJB ServiceProcessing task by invoking JMS Service
【設計模式】業務代表模式