Java的两种动态代理机制
代理机制,也就是提供了对目标对象额外的访问方式,它的好处是在不修改目标对象的功能的前提下,除了目标对象可以实现的功能之外,还可以通过代理对象实现一些额外的操作。
与静态代理不同,动态模式下的代理类是在程序运行时,通过反射机制动态生成的,并不是在程序运行前就事先加载好的。
1)jdklib模式的代理
jdk模式的代理三个基本要素是:接口,目标对象,代理对象,
需要满足的条件是:
1.被代理的类(目标类)必须要有接口;
2.代理对象必须是该接口的实现对象;
3.代理对象只能调用接口中的方法,不能调用目标类自己的方法。下面结合具体代码来解释;
首先需要一个接口,定义两个方法
public interface ISomeInterface {
void doOne(String message);
void doOther(String message);
}
准备一个需要被代理的目标类(是接口的实现类),需要实现接口中的方法,此外还定义了目标类自己的方法,如下:
public class TargetObject implements ISomeInterface{
@Override
public void doOne(String message) {
System.out.println("这是目标对象实现接口的doOne方法:" + message);
}
@Override
public void doOther(String message) {
System.out.println("这是目标对象实现接口的doOther方法:" + message);
}
public void myWork(String message) {
System.out.println("这是目标对象自己的方法:" + message);
}
}
下面就是jdklib代理的重点内容,看代码:
public class JdkProxy