首页 > 其他 > 详细

代理模式

时间:2019-09-25 18:21:58      阅读:76      评论:0      收藏:0      [点我收藏+]

算法介绍:在代理模式中,两个对象参与处理用一个请求,接收地请求有代理对象委托给真实对象处理,通过代理对象控制请求的访问。代理对象在客户端程序和真实目标对象起一个中间桥梁的作用, 通过使用对象聚合代替继承,有效地降低了软件模块之间地耦合度。

 

jdk动态代理结构图分析

技术分享图片

 

 

/**
 * @author bo
 * @Date: 2019/5/13 16:38
 */
public class DynamicClient {

    public static void main(String[] args) {
        // 真实处理对象
        InvocationHandler handler = new TargetImpl();

        //创建代理类实例对象
        ITarget target = (ITarget) Proxy.newProxyInstance(ITarget.class.getClassLoader(),
                new Class[]{ITarget.class}, handler);

        //操作方法(实际执行的是)handler中的invoke方法
        target.operation();
    }
}

 

/**
 * ITarget接口
 * @author bo
 * @Date: 2019/5/13 16:36
 */
public interface ITarget {
    /**
     * 操作方法
     */
    void operation();
}

 

/**
 * ITarget目标代理类实现类
 * @author bo
 * @Date: 2019/5/13 16:37
 */
public class TargetImpl implements InvocationHandler {

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) {
        System.out.println("---method" + method.getName());
        System.out.println("---动态代理类实现");
        return null;
    }
}

 

 

代理模式的应用非常广泛,在JDK中就为我们引入了动态代理技术。

动态代理,就是一个系统在没有统一接口的情况下,在运行时,动态地对那些接口不同地对象提供代理支持。

动态代理的核心是InvocationHandler接口,要使用动态代理必须实现该接口。

这个接口的委派任务是在invoke(Object proxy,Method m,Object[] args)方法里实现的

 

代理模式

原文:https://www.cnblogs.com/Jemb/p/11585779.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!