Java代理模式实例分析

 更新时间:2019年07月30日 08:46:57   作者:cakincqm  
这篇文章主要介绍了Java代理模式,结合实例形式对比分析了java代理模式的使用方法与相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java代理模式。分享给大家供大家参考,具体如下:

一 不用代理模式的酒商

1 代码

class RealSubject // 真实角色(红酒厂商)
{
  public void sell() {
    System.out.println("我是红酒厂商,欢迎品尝购买");
  }
}
public class NoProxytest { // 客户端
  public static void main( String[] args ) {
    RealSubject sub = new RealSubject();
    sub.sell();
  }
}

2 运行

我是红酒厂商,欢迎品尝购买

二 使用代理模式的酒商

1 代码

abstract class Subject // 抽象类,真实角色与代理角色共同继承
{
  abstract public void sell();
}
class RealSubject extends Subject // 真实角色(红酒厂商)
{
  public void sell() // 覆写抽象方法
  {
    System.out.println("我是红酒厂商,欢迎品尝购买");
  }
}
class ProxySubject extends Subject // 代理角色(代理商)
{
  private RealSubject realSubject; // 持有真实角色的引用
  public void sell() // 该方法封装了真实对象的sell方法
  {
    presell();
    if (realSubject == null) {
      realSubject = new RealSubject();
    }
    realSubject.sell(); // 此处执行真实对象的sell方法
    postsell();
  }
  private void presell()//执行实际角色的方法之前可以进行一些预处理
  {
    System.out.println("广告宣传,免费品尝");
  }
  private void postsell()//执行实际角色的方法之后可以进行一些后续工作
  {
    System.out.println("售后处理");
  }
}
public class proxyDemo {
  public static void main( String[] args ) // 客户直接找代理商,无须和实际真正角色打交道
  {
    Subject sub = new ProxySubject();
    sub.sell();
  }
}

2 运行

广告宣传,免费品尝
我是红酒厂商,欢迎品尝购买
售后处理

3 类图

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • java 使用JDBC构建简单的数据访问层实例详解

    java 使用JDBC构建简单的数据访问层实例详解

    以下是如何使用JDBC构建一个数据访问层,包括数据转换(将从数据库中查询的数据封装到对应的对象中……),数据库的建立,以及如何连接到数据库,需要的朋友可以参考下
    2016-11-11
  • 基于springboot2集成jpa,创建dao的案例

    基于springboot2集成jpa,创建dao的案例

    这篇文章主要介绍了基于springboot2集成jpa,创建dao的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java异常处理机制深入理解

    Java异常处理机制深入理解

    如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器
    2022-01-01
  • Java使用Callable和Future创建线程操作示例

    Java使用Callable和Future创建线程操作示例

    这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-09-09
  • SpringBoot项目使用mybatis-plus逆向自动生成全套代码

    SpringBoot项目使用mybatis-plus逆向自动生成全套代码

    在JavaWeb工程中,每一个SSM新项目或者说是SpringBoot项目也好,都少不了model、controller、service、dao等层次的构建。使用mybatis-plus逆向可以自动生成,感兴趣的可以了解一下
    2021-09-09
  • springboot 事件监听的实现方法

    springboot 事件监听的实现方法

    这篇文章主要介绍了springboot 事件监听的实现方法,并详细的介绍了四种监听方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • java数据结构之搜索二叉树

    java数据结构之搜索二叉树

    这篇文章主要为大家详细介绍了java数据结构之搜索二叉树,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • MyBatis持久层框架的用法知识小结

    MyBatis持久层框架的用法知识小结

    MyBatis 本是apache的一个开源项目iBatis,接下来通过本文给大家介绍MyBatis持久层框架的用法知识小结,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-07-07
  • MybatisPlus多条件 or()的使用问题小结

    MybatisPlus多条件 or()的使用问题小结

    这篇文章主要介绍了MybatisPlus多条件 or()的使用问题小结,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • spring boot基于DRUID实现数据源监控过程解析

    spring boot基于DRUID实现数据源监控过程解析

    这篇文章主要介绍了spring boot基于DRUID实现数据源监控过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论