Java Business Delegate Pattern(業(yè)務代表模式)

業(yè)務代表模式(Business Delegate Pattern)用于對表示層和業(yè)務層解耦。它基本上是用來減少通信或?qū)Ρ硎緦哟a中的業(yè)務層代碼的遠程查詢功能。在業(yè)務層中我們有以下實體。

  • 客戶端(Client) - 表示層代碼可以是 JSP、servlet 或 UI java 代碼。
  • 業(yè)務代表(Business Delegate) - 一個為客戶端實體提供的入口類,它提供了對業(yè)務服務方法的訪問。
  • 查詢服務(LookUp Service) - 查找服務對象負責獲取相關的業(yè)務實現(xiàn),并提供業(yè)務對象對業(yè)務代表對象的訪問。
  • 業(yè)務服務(Business Service) - 業(yè)務服務接口。實現(xiàn)了該業(yè)務服務的實體類,提供了實際的業(yè)務實現(xiàn)邏輯。
  1. 創(chuàng)建 BusinessService 接口。
/**
 * 1. 創(chuàng)建 BusinessService 接口。
 * @author mazaiting
 */
public interface BusinessService {
    void doProcessing();
}
  1. 創(chuàng)建實體服務類
/**
 * 2. 創(chuàng)建實體服務類。
 * @author mazaiting
 */
public class EJBService implements BusinessService{

    public void doProcessing() {
        System.out.println("Processing task by invoking EJB Service");
    }

}

/**
 * 2. 創(chuàng)建實體服務類。
 * @author mazaiting
 */
public class JMSService implements BusinessService{

    public void doProcessing() {
        System.out.println("Processing task by invoking JMS Service");
    }

}
  1. 創(chuàng)建業(yè)務查詢服務。
/**
 * 3. 創(chuàng)建業(yè)務查詢服務。
 * @author mazaiting
 */
public class BusinessLookUp {
    public BusinessService getBusinessService(String serviceType){
        if (serviceType.equalsIgnoreCase("EJB")){
            return new EJBService();
        } else {
            return new JMSService();    
        }
    }
}
  1. 創(chuàng)建業(yè)務代表。
/**
 * 4. 創(chuàng)建業(yè)務代表。
 * @author mazaiting
 */
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();
    }
    
}
  1. 創(chuàng)建客戶端。
/**
 * 5. 創(chuàng)建客戶端。
 * @author mazaiting
 */
public class Client {
    BusinessDelegate businessDelegate;
    public Client(BusinessDelegate businessDelegate){
        this.businessDelegate = businessDelegate;
    }
    
    public void doTask(){
        businessDelegate.doTask();
    }
}
  1. 使用 BusinessDelegate 和 Client 類來演示業(yè)務代表模式。
/**
 * 6. 使用 BusinessDelegate 和 Client 類來演示業(yè)務代表模式。
 * @author mazaiting
 */
public class Test {
    
    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.打印結(jié)果

Processing task by invoking EJB Service
Processing task by invoking JMS Service
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,515評論 25 708
  • 導讀:從JDK 5.0開始 J2EE 改名為 Java EE。 Java EE被企業(yè)廣泛使用,必然有其可取之處,甚...
    堯淳閱讀 663評論 0 3
  • 如果覺得累,就放手吧 一、 他曾經(jīng)責備我,說我根本不愛他。 我說我不懂什么是愛,在一起感覺不錯就可以。 他不止一次...
    夢之兮閱讀 1,524評論 8 11