美文网首页
浅析Java代理机制

浅析Java代理机制

作者: elon | 来源:发表于2016-03-26 18:49 被阅读36次

简单代理

重点在于代理类和被代理类实现 同一个 接口。

// 接口
public interface MyInterface {
    void doSomething();
    void somethingElse(String arg);
}
// 被代理类
public class RealObject implements MyInterface {
    public void doSomething() {
        System.out.println("RealObject.doSomething().");
    }
    public void somethingElse(String arg) {
        System.out.println("RealObject.somethingElse(" + arg + ").");
    }
}
// 代理类
public class MyInterfaceProxy implements MyInterface {
    private MyInterface proxy;
    private int cnt = 0;
    public MyInterfaceProxy(MyInterface proxy) {
        this.proxy = proxy;
    }
    public void doSomething() {
        System.out.println("Proxy.doSomething() called: " + ++cnt);
        proxy.doSomething();
    }
    public void somethingElse(String arg) {
        System.out.println("Proxy.somethingElse(" + arg + ").");
        proxy.somethingElse(arg);
    }
}
// 测试
public class TestProxy {
    public static void testProxy(MyInterface mi) {
        mi.doSomething();
        mi.doSomething();
        mi.somethingElse("bang-bang-bang");
    }
    public static void main(String[] args) {
        MyInterface mi1 = new MyInterfaceProxy(new RealObject());
        testProxy(mi1);
    }
}

动态代理

从上面可以看到,丫的,代理类必须实现跟被代理类一样的接口,这种简直属于没天理的行为。所以Java提供了InvocationHandler来实现动态代理。运用到的原理包括:

  1. Object作为所有类的基类,被代理类会被转化为此类型。
  2. 反射机制。

相关文章

  • 浅析Java代理机制

    简单代理 重点在于代理类和被代理类实现 同一个 接口。 动态代理 从上面可以看到,丫的,代理类必须实现跟被代理类一...

  • java反射和动态代理

    java动态代理Proxy.newProxyInstance 详解java代理机制(静态代理、动态代理)以及使用场景

  • Java 动态代理

    java的动态代理机制详解 JDK动态代理详解 Java核心技术点之动态代理

  • Java动态代理

    Spring的核心AOP的原理就是java的动态代理机制。所以,我们需要好好将java动态代理机制进行梳理。 ...

  • Java反射机制详解(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java反射机制总结(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java代理机制

    #静态代理 静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但如果我们需要很多的代理,每一个都...

  • JAVA代理机制

    Java代理相关主要知识如下: (1)利用代理可以在运行时创建一个实现了一组给定接口的新类。 这种功能只有在编译时...

  • java代理机制

    一、代理模式介绍 代理是一种设计模式,主要用于在我们访问目标对象时,在不修改目标对象的前提下,可以对目标对象提供的...

  • Java代理机制

    代理模式 可以分为两种,一种是静态代理,一种是动态代理。两种代理从虚拟机加载类的角度来讲,本质上都是一样的,都是在...

网友评论

      本文标题:浅析Java代理机制

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