学习动态代理stepbystep(5)[应用jdk中的动态代理]

如果你和我一样是初学者,只想用动态代理,其实前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....动态代理....先到这吧....


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭