如果你和我一样是初学者,只想用动态代理,其实前4篇文章看不看都可以的。只看这篇,知道怎么用就可以了呗。。。
不过,说实话,如果有了前面的基础,确实是会很多哦,我在网上找动态代理应用的实例,发现它代码根本就没把动态代理的精神体现出来,不过咱只对事,不对人,哈哈~~
1.一个被代理的类的接口。
package com.jdkproxy.test;
public interface Interface {
public abstract String say(String s);
}
2.想被代理的类:
package com.jdkproxy.test;
public class People implements Interface
{
@Override
public String say(String s) {
System.out.println(s);
return s;
}
}
3.我们想要的代理处理逻辑:注意哦,如果你在Myeclipse中先写了对jdk的模拟,这里的包不要引错了。
package com.jdkproxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class DynamicProxy implements InvocationHandler{
private Object target;
public DynamicProxy(Object target) {
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("我的名字是:");
method.invoke(this.target, args);
System.out.println("大家好,希望朋友们多多指教!");
return null;
}
}
好了。。。这就算完事了。。
写个测试吧:
package com.jdkproxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
People pl =new People();
InvocationHandler dp = new DynamicProxy(pl);
注意这个方法,jdk的与我们自己写的参数是不一样滴
Interface it = (Interface)Proxy.newProxyInstance(Interface.class.getClassLoader(),People.class.getInterfaces(),dp);
it.say("漂泊小柒");
}
}
输出结果:
我的名字是:
漂泊小柒
大家好,希望朋友们多多指教!
O了......java....动态代理....先到这吧....