美文网首页
我对代理模式的理解

我对代理模式的理解

作者: 挡不住的柳Willow | 来源:发表于2017-10-13 16:57 被阅读18次

我在学校迎新晚会上见到一个跳舞的女生,第一眼就想把她占为己有,可是我与她素不相识,只能找其他同学偷偷要来她的联系方式。这就是代理模式

概念

我们来看一下head first设计模式里是怎么定义代理模式的:代理模式为另一个对象提供一个替身或占位符以控制这个对象的访问。使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。

如何实现

拿我追女生的例子来说,我就是委托对象,那个认识她的同学就是代理,我让他去帮我要电话,本质上是我在要电话,最后的结果也是我要到了电话,而事实上却是他找她要的电话。对于代理模式的调用者来说,是我在要电话而并不关注要电话的那个代理,这里大家肯定觉得很熟悉,没错,我们采用了面向接口编程的思想,调用者只需要使用接口中的方法,不用在乎具体的实现类。
因此,我们可以先创建一个委托接口,接口中有一个要电话的抽象方法。然后写一个‘我’对象继承自这个接口,实现要电话的方法;再写一个代理类同样实现这个委托接口,在这个代理类中注入‘我’的实例,调用‘我’中的方法去实现接口方法。总结为一张图:


代码实现

定义委托接口

public interface Subject{
    void getCall();
}

定义‘我’

public class Me implements Subject{
    @Override
    public void getCall() {
        // TODO Auto-generated method stub
        System.out.println("我想要你的电话");
    }

}

定义代理

public class Proxy implements Subject{
    private Subject subject;
    public Proxy(Subject subject) {
        // TODO Auto-generated constructor stub
        this.subject = subject;
    }
    @Override
    public void getCall() {
        // TODO Auto-generated method stub
        subject.getCall();
    }
}

测试

public class ProxyTest {
    public static void main(String[] args) {
        Me me = new Me();
        Subject proxy = new Proxy(me);
        proxy.getCall();
    }
}

输出结果:

image.png

相关文章

  • 我对代理模式的理解

    我在学校迎新晚会上见到一个跳舞的女生,第一眼就想把她占为己有,可是我与她素不相识,只能找其他同学偷偷要来她的联系方...

  • 代理模式和动态代理实战应用

    代理设计模式 java有20多种设计模式,代理模式肯定是非常出名的一种。代理模式可以理解为不直接访问对象,让代理对...

  • 代理模式详解:静态代理+JDK/CGLIB 动态代理实战

    1. 代理模式 代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real o...

  • 静态代理与动态代理

    简介 看了挺多关于代理方面的文章,这是我个人对代理的一些粗浅的理解。 代理模式是一种毕竟常见的设计模式。就好比歌手...

  • Java动态代理

    一,简介 在将动态代理之前,先按照我自己的理解来讲讲代理模式,和静态代理 二,代理模式 我们常常说代理模式是一种j...

  • 代理模式

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。 一、如何理解代理模式的定义 代理在生活中是一种非常常见的...

  • Java动态代理解析

    动态代理原理解析 一. 代理模式例子: 目标类及代理类统一接口 目标实现类 自定义的代理模式处理程序 4.代理模式...

  • 设计模式(六) -- 代理模式

    什么是代理模式 代理模式可以理解成一个类代表另一个类的功能并可加自己的代理功能。简单来说可以理解成汽车代理商代理汽...

  • 理解代理模式

    1.代理模式的主旨 要想实现代理模式,就要有三个组成部分,一个是协议,一个是代理者,一个是委托者。 我们需要定义一...

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

网友评论

      本文标题:我对代理模式的理解

      本文链接:https://www.haomeiwen.com/subject/nonzyxtx.html