鍍金池/ 教程/ Java/ Java業(yè)務(wù)代理模式
Java前端控制器模式
Java工廠設(shè)計(jì)模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對(duì)象模式
Java迭代器模式
Java責(zé)任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過(guò)濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過(guò)濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計(jì)模式
Java空對(duì)象模式
Java數(shù)據(jù)訪問(wèn)對(duì)象模式
Java訪問(wèn)者模式
Java組合實(shí)體模式
Java服務(wù)定位器模式

Java業(yè)務(wù)代理模式

業(yè)務(wù)代理模式用于解耦表示層和業(yè)務(wù)層。 它基本上用于減少表示層代碼中的業(yè)務(wù)層代碼的通信或遠(yuǎn)程查找功能。在業(yè)務(wù)層有以下實(shí)體。

  • 客戶端(Client) - 表示層代碼可以是JSP,servlet或UI java代碼。
  • 業(yè)務(wù)代理 - 為客戶端實(shí)體提供對(duì)業(yè)務(wù)服務(wù)方法的訪問(wèn)的單個(gè)入口點(diǎn)類。
  • 查找服務(wù) - 查找服務(wù)對(duì)象負(fù)責(zé)獲得相關(guān)業(yè)務(wù)的實(shí)施和提供業(yè)務(wù)的委托對(duì)象業(yè)務(wù)對(duì)象的訪問(wèn)。
  • 業(yè)務(wù)服務(wù) - 業(yè)務(wù)服務(wù)接口。 具體類實(shí)現(xiàn)這個(gè)業(yè)務(wù)服務(wù)以提供實(shí)際的業(yè)務(wù)實(shí)現(xiàn)邏輯。

實(shí)現(xiàn)實(shí)例

在這個(gè)實(shí)現(xiàn)實(shí)例中,將創(chuàng)建一個(gè)業(yè)務(wù)代理模式的各種實(shí)體的Client,BusinessDelegate,BusinessServiceLookUpService,JMSServiceEJBService。

BusinessDelegatePatternDemo這是一個(gè)演示類,將使用 BusinessDelegateClient 來(lái)演示業(yè)務(wù)代理模式的使用。

業(yè)務(wù)代理模式示例的結(jié)構(gòu)如下圖所示 -

第1步

創(chuàng)建BusinessService接口,其代碼如下所示 -
BusinessService.java

public interface BusinessService {
   public void doProcessing();
}

第2步

創(chuàng)建具體的服務(wù)類,其代碼如下所示 -
EJBService.java

public class EJBService implements BusinessService {

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

JMSService.java

public class JMSService implements BusinessService {

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

第3步

創(chuàng)建業(yè)務(wù)查找服務(wù),其代碼如下所示 -
BusinessLookUp.java

public class BusinessLookUp {
   public BusinessService getBusinessService(String serviceType){

      if(serviceType.equalsIgnoreCase("EJB")){
         return new EJBService();
      }
      else {
         return new JMSService();
      }
   }
}

第4步

創(chuàng)建業(yè)務(wù)代理,其代碼如下所示 -
BusinessDelegate.java

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步

創(chuàng)建客戶端,其代碼如下所示 -
Client.java

public class Client {

   BusinessDelegate businessService;

   public Client(BusinessDelegate businessService){
      this.businessService  = businessService;
   }

   public void doTask(){        
      businessService.doTask();
   }
}

第6步

使用BusinessDelegateClient類來(lái)演示業(yè)務(wù)代理模式,其代碼如下所示 -
BusinessDelegatePatternDemo.java

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步

驗(yàn)證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

Processing task by invoking EJB Service
Processing task by invoking JMS Service