>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26551 个阅读者 刷新本主题
 * 贴子主题:  Java设计模式:业务代表模式 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-08-10 12:25:47     消息  查看  搜索  好友  邮件  复制  引用

  

业务代表模式

    业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。    
  • 客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码。
  • 业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问。
  • 查询服务(LookUp Service) - 查找服务对象负责获取相关的业务实现,并提供业务对象对业务代表对象的访问。
  • 业务服务(Business Service) - 业务服务接口。实现了该业务服务的实体类,提供了实际的业务实现逻辑。

实现

     我们将创建 Client、BusinessDelegate、BusinessService、LookUpService、JMSService 和 EJBService 来表示业务代表模式中的各种实体。

     BusinessDelegatePatternDemo,我们的演示类使用 BusinessDelegate 和 Client 来演示业务代表模式的用法。

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小    

步骤 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






程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-14 22:10:28 重新编辑]
  Java面向对象编程-->Lambda表达式
  JavaWeb开发-->JavaWeb应用入门(Ⅱ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->客户端协议处理框架
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->绑定表单
  CRMEB_Java新零售社交电商系统
  求素数
  序列化与反序列化知识点汇总
  Java设计模式: 单一职责原则和依赖倒置原则详解
  ThreadLocal的内存泄露的原因分析以及如何避免
  Java 语言中十大“坑爹”功能!
  Eclipse和MyEclipse的区别
  Java注解的定义和使用
  Eclipse使用指南:快速修复功能
  Java入门实用代码:获取当前线程名称
  Java入门实用代码:删除链表中的元素
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java入门实用代码:格式化时间(SimpleDateFormat)
  Java 入门实用代码:取最大和最小值
  Java程序代码优化技巧
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。