Proxy动态代理机制

Posted 天耀106

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Proxy动态代理机制相关的知识,希望对你有一定的参考价值。

代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问,是控制器访问的方式,而不只是对方法扩展。

声明一个共用的接口Subject:

package com.intelink.wechat_lyl.test;

public interface Subject 

    void doSomething();

具体实现类RealSubject:

package com.intelink.wechat_lyl.test;

public class RealSubject implements Subject

    @Override
    public void doSomething() 
        System.out.print("Call doSomething()");
    

实现InvocationHandler,做一些具体的逻辑处理:

package com.intelink.wechat_lyl.test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ProxyHandler implements InvocationHandler 

    private Object realSubject;

    public ProxyHandler(Object realSubject)
        this.realSubject= realSubject;
    

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable 

        Object result= method.invoke(realSubject,args);

        return result;
    

通过Proxy新增代理类对象:

package com.intelink.wechat_lyl.test;

import java.lang.reflect.Proxy;

public class DynamicProxy 

    public static void main(String[] args)

        RealSubject real = new RealSubject();

        Subject proxySubject= (Subject) Proxy.newProxyInstance(Subject.class.getClassLoader(),new Class[]Subject.class,new ProxyHandler(real));

        proxySubject.doSomething();

    

动态代理的作用在于在不修改源码的情况下,可以增强一些方法,在方法执行前后做任何想做的事情。

以上是关于Proxy动态代理机制的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Proxy模式及Java内建的动态代理机制

java深入分析Java反射-动态代理 proxy

java Proxy InvocationHandler 动态代理实现详解

动态代理的使用和实现机制

JDK动态代理简述

动态代理之JDK Proxy浅析