`
和谐是美
  • 浏览: 49615 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java代理模式

    博客分类:
  • java
阅读更多
java代理模式

目录

    简介
    应用场景
    代码示例
展开

简介
  即Proxy Pattern,23种java常用设计模式之一。代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问。
  代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
  代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。
应用场景
  例如:假设有一组对象都实现同一个接口,实现同样的方法,但这组对象中有一部分对象需要有单独的方法,传统的笨办法是在每一个应用端都加上这个单独的办法,但是代码重用性低,耦合性高。
  如果用代理的方法则很好的解决了这个问题。
代码示例
示例说明
  假设有一个Italk接口,有空的方法talk()(说话),所有的people对象都实现(implements)这个接口,实现talk()方法,前端有很多地方都将people实例化,执行talk方法,后来发现这些前端里有一些除了要说话以外还要唱歌(sing),那么我们既不能在Italk接口里增加sing()方法,又不能在每个前端都增加sing方法,我们只有增加一个代理类talkProxy,这个代理类里实现talk和sing方法,然后在需要sing方法的客户端调用代理类即可,代码如下:
接口类Italk
  public interface Italk {
  public void talk(String msg);
  }
实现类people
  public class People implements Italk {
  public String username;
  public String age;
  public String getName() {
  return username;
  }
  public void setName(String name) {
  this.username= name;
  }
  public String getAge() {
  return age;
  }
  public void setAge(String age) {
  this.age = age;
  }
  public People(String name1, String age1) {
  this.username= name1;
  this.age = age1;
  }
  public void talk(String msg) {
  System.out.println(msg+"!你好,我是"+username+",我年龄是"+age);
  }
  }
代理类talkProxy
  public class TalkProxy implements Italk {
  Italk talker;
  public TalkProxy (Italk talker) {
  //super();
  this.talker=talker;
  }
  public void talk(String msg) {
  talker.talk(msg);
  }
  public void talk(String msg,String singname) {
  talker.talk(msg);
  sing(singname);
  }
  private void sing(String singname){
  System.out.println("唱歌:"+singname);
  }
  }
  }
应用端myProxyTest
  public class MyProxyTest {
  /**代理模式
  * @param args
  */
  public static void main(String[] args) {
  //不需要执行额外方法的
  Italk people1=new People("湖海散人","18");
  people1.talk("No ProXY Test");
  System.out.println("-----------------------------");
  //需要执行额外方法的
  TalkProxy talker=new TalkProxy(people1);
  talker.talk("ProXY Test","七里香");
  }
  }

扩展阅读:

        1

        阎宏著,《java与模式》;
        2

        Johnson等著《Design Patterns》

分享到:
评论

相关推荐

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    java 代理模式详解

    总结一下,Java代理模式的核心在于`Proxy`类和`InvocationHandler`接口,它们共同实现了在运行时动态创建符合特定接口的代理对象。通过代理,我们可以在不修改原始对象代码的情况下,添加额外的功能或者控制对原始...

    Java 代理模式

    Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,该代理对象在调用实际对象的方法之前或之后可以执行额外的操作。这在不修改原有对象代码的情况下,提供了扩展功能的可能性。代理模式通常分为两...

    java代理模式总结

    Java代理模式是一种设计模式,它允许我们为现有的对象创建一个代理对象,以便在不修改原对象的情况下增强或扩展其功能。这种模式在处理需要添加额外逻辑但又不想修改原始类的场景时尤其有用,比如日志、事务管理、...

    java代理模式和动态代理

    ### Java代理模式和动态代理详解 #### 一、概述 在软件工程中,代理模式是一种常用的软件设计模式,主要用于在不直接暴露目标对象的情况下提供一个替代接口。这种模式可以简化客户端与目标对象之间的交互,同时还...

    Java代理模式模板代码,包含动态代理与静态代理

    Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理,这个代理对象可以在不影响原始对象功能的基础上,增强或扩展其行为。代理模式在软件开发中广泛应用,例如用于权限控制、事务管理、日志记录等场景。...

    java代理模式示例源码

    在给定的“java代理模式示例源码”中,我们可以通过房产中介的例子来理解这种模式。 房产中介在现实生活中,是客户与房东之间的桥梁,它可以代表客户处理租赁事宜,也可以在房东和客户之间传递信息,这与代理模式的...

    16-Java代理模式的学习笔记1

    Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理,这个代理对象可以在调用原始对象的方法之前或之后执行额外的操作。代理模式在软件工程中有多种应用,例如:增加安全控制、性能监控、事务管理等。...

    Java代理模式例子

    Java代理模式 事例很生动,非常容易理解,推荐给大家。

    java 代理模式

    Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理,这个代理对象可以在调用原始对象的方法之前或之后执行额外的操作。代理模式在很多场景下都非常有用,比如在访问对象时增加安全性、性能监控、事务...

    JAVA设计模式之代理模式实例

    在本实例中,我们将深入探讨Java中的代理模式及其应用。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。它可以控制目标对象的访问,也可以在调用目标对象的...

    java实现代理模式

    用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明

    Java代理模式.pdf

    Java代理模式.pdf

Global site tag (gtag.js) - Google Analytics