设计模式学习笔记--业务代表模式

二十七、业务代表模式

业务代表模式,Business Delegate Pattern,主要用于表示层与业务层的解耦。

简介

业务代表模式为客户端类,提供一个查询访问业务的接口,而不暴露过多的内部业务逻辑。

实现

创建一个客户端实体类Client,以及业务类、服务接口和代表类。
business
- 创建客户端类

Client.java

/**
 * Created by thinkpad on 16-12-11.
 * 客户端类
 */
public class Client {
    BusinessDelegate businessService;

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

    public void doTask(){
        businessService.doTask();
    }
}
  • 创建业务服务接口

IBusinessServicejava

/**
 * Created by thinkpad on 16-12-11.
 * 业务服务接口
 */
public interface IBusinessService {
    public void doProcessing();
}
  • 创建业务实现类

EJBService.java

/**
 * Created by thinkpad on 16-12-11.
 * 具体的业务实现类
 */
public class EJBService implements IBusinessService{

    @Override
    public void doProcessing() {
        System.out.println("EJB服务");
    }
}

JMSService.java

/**
 * Created by thinkpad on 16-12-11.
 * 具体的业务实现类
 */
public class JMSService implements IBusinessService{

    @Override
    public void doProcessing() {
        System.out.println("JMS服务");
    }
}
  • 创建业务代理类

    Business Delegate.java

    /**
    * Created by thinkpad on 16-12-11.
    * 业务代表类
    */
    public class BusinessDelegate {
      private BusinessLookup lookupService = new BusinessLookup();
      private IBusinessService businessService;
      private String serviceType;
      //
      public void setServiceType(String serviceType){
          this.serviceType = serviceType;
      }
      //
      public void doTask(){
          businessService = lookupService.getBusinessService(serviceType);
          businessService.doProcessing();
      }
    }
  • 业务查询类

    BusinessLookup.java

    /**
    * Created by thinkpad on 16-12-11.
    * 业务查询服务类
    */
    public class BusinessLookup {
      //根据选择的服务类型,返回所需服务
      public IBusinessService getBusinessService(String serviceType){
          if (serviceType.equalsIgnoreCase("EJB")){
              return new EJBService();
          }else{
              return new JMSService();
          }
      }
    }
  • 演示

    BusinessDelegatePatternDemo.java

/**
 * Created by thinkpad on 16-12-11.
 * 演示类
 */
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();
    }
}
  • 输出
EJB服务
JMS服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值