业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。
客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码。
业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问。
查询服务(LookUp Service) - 查找服务对象负责获取相关的业务实现,并提供业务对象对业务代表对象的访问。
业务服务(Business Service) - 业务服务接口。实现了该业务服务的实体类,提供了实际的业务实现逻辑。
抽象和封装应用程序的访问逻辑,从而为表示层提供对业务逻辑层的访问。
解决表示层与业务逻辑层之间的耦合问题,允许表示层通过业务代表间接访问业务逻辑层。
当需要在多层应用程序中清晰地分离表示层和业务逻辑层时。
业务代表接口:定义访问业务逻辑的方法。
业务代表实现:实现业务代表接口,封装调用业务逻辑层的逻辑。
业务服务:业务逻辑层的接口或类,包含业务操作。
业务代表接口:声明访问业务逻辑的方法。
业务代表实现:实现接口,包含调用业务服务的代码。
业务服务:业务逻辑的具体实现。
包含的几个主要角色
业务代表接口(Business Delegate Interface):声明访问业务逻辑的方法。
业务代表实现(Business Delegate Implementation):实现业务代表接口,封装对业务服务的调用。
业务服务(Business Service):业务逻辑层的接口或类,包含实际的业务操作。
表示层(Presentation Layer):应用程序的前端,通过业务代表访问业务逻辑。
业务逻辑层(Business Logic Layer):包含应用程序的核心业务逻辑。
业务代表模式通过提供一个抽象层来访问业务逻辑,有助于保持应用程序的灵活性和可维护性。
Web应用程序:Web层作为表示层,通过业务代表访问后端服务层。
表示层与业务逻辑层解耦:业务代表作为中间层,降低耦合度。
集中访问逻辑:简化表示层的代码,将访问逻辑集中在业务代表中。
易于维护和扩展:添加新的业务逻辑访问时,只需修改业务代表。
可能增加复杂性:对于简单应用程序,可能增加不必要的抽象层次。
当开发多层应用程序,需要在表示层和业务逻辑层之间提供清晰分离时,考虑使用业务代表模式。
业务代表应该尽量简洁,避免包含复杂的逻辑。
我们将创建 Client、BusinessDelegate、BusinessService、LookUpService、JMSService 和 EJBService 来表示业务代表模式中的各种实体。
BusinessDelegatePatternDemo 类使用 BusinessDelegate 和 Client 来演示业务代表模式的用法。
步骤 1:创建 BusinessService 接口。
BusinessService.java
public interface BusinessService {
public void doProcessing();
}
步骤 2:创建实体服务类。
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:创建业务查询服务。
BusinessLookUp.java
public class BusinessLookUp {
public BusinessService getBusinessService(String serviceType){
if(serviceType.equalsIgnoreCase("EJB")){
return new EJBService();
}else {
return new JMSService();
}
}
}
步骤 4:创建业务代表。
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:创建客户端。
Client.java
public class Client {
BusinessDelegate businessService;
public Client(BusinessDelegate businessService){
this.businessService = businessService;
}
public void doTask(){
businessService.doTask();
}
}
步骤 6:使用 BusinessDelegate 和 Client 类来演示业务代表模式。
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:执行程序,输出结果:
Processing task by invoking EJB Service
Processing task by invoking JMS Service
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。