java动态代理模式概述

创建代理模式
1。参数1类的加载器
ClassLoder classloder = c.getClass().getClassLoader ();
//ClassLoder:从文档中对ClassLoader类的介绍可以总结出这个类的作用就是根据一个指定的类的全限定名,找到对应的Class字节码文件,然后加载它转化成一个java.lang.Class类的一个实例.

2. 一个interface对象数组,表示我们将要给我们的代理对象提供一组什么样的接口,如果我们提供了这样一个接口对象数组,那么也就是声明了代理类实现了这些接口,代理类就可以调用接口中声明的所有方法。
Class[] interfaces={Court.class};

第三个参数执行处理器用于定义方法的增强原则
3. InvocationHandler ih = new InvocationHandler(){
当代理对象调用了接口中的任何一个方法都会将该方法
以method对象的形式传入invoke方法
invoke** 方法中我们可以手动判断是否执行手动处理返回结果添加代码增加功能
args 代理对象调用方法时传入的实参数组
proxy 代理对象**
public Object incoke(Object proxy,Method method,Object[] args){
System.out.println(“输入的内容”);
Object o = method.invoke(c,args);
System.out.println(“接收到的方法的返回值为”+o);
return o;
method.invoke()方法,用来执行某个的对象的目标方法
}
}. ;
Court cProxy = (Court)Proxy.newProxyInstance(classloder,interfaces,ih);
int res = cProxy.doCourt(10);
System.out.println(res);
}
通过Proxy类的newProxyInstance方法创建代理对象,我们来看下方法中的参数
* 第一个参数:people.getClass().getClassLoader(),使用handler对象的classloader对象来加载我们的代理对象
* 第二个参数:people.getClass().getInterfaces(),这里为代理类提供的接口是真实对象实现的接口,这样代理对象就能像真实对象一样调用接口中的所有方法
* 第三个参数:handler,我们将代理对象关联到上面的InvocationHandler对象上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值