码迷,mamicode.com
首页 > 编程语言 > 详细

Java中代理的简明使用

时间:2018-08-05 14:16:10      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:oca   voc   style   逻辑   invoke   final   调用   dem   nts   

代理

     首先应该明确两个概念

       代理对象:对访问目标对象进行拦截的对象

       目标对象:实际要访问的对象

      代理的作用

          可以用对方法的加强;

     动态代理demo

    

//目标对象
public class Target implements Itarget{

	@Override
	public void test1() {
		System.out.println("目标对象的test1()");
		
	}

}

  

//代理对象
public class ProxyDemo1 {
    @Test
    public void test1(){
        //创建动态代理对象
        final Target tar=new Target();//在匿名内部类被调用,加final修饰
        Itarget newProxyInstance =  (Itarget) Proxy.newProxyInstance(tar.getClass().getClassLoader(), //传递一个和目标一致的类加载器
                                tar.getClass().getInterfaces(), //传递一个一个Class<?>[] interfaces
                                new InvocationHandler() {//使用匿名内部类实现接口InvocationHandler                                    
                                    @Override
                                    public Object invoke(Object proxy, Method method, Object[] args)
                                            throws Throwable {
                                        System.out.println("调用目标方法前的逻辑");
                                        Object invoke = method.invoke(tar, args);
                                        System.out.println("调用目标方法前的逻辑");
                                        return invoke;
                                    }
                                }
                                );
        newProxyInstance.test1();//实际调用了InvocationHandler下的invoke
        
    }
}
//执行结果
调用目标方法前的逻辑 目标对象的test1() 调用目标方法前的逻辑

 

      注意:jdk的Proxy方式实现的动态代理目标对象必须有接口,没有接口不能实现jdk

     版本的动态代理.

Java中代理的简明使用

标签:oca   voc   style   逻辑   invoke   final   调用   dem   nts   

原文地址:https://www.cnblogs.com/steve-guo/p/9425115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!