动态代理

java动态代理的使用,不在使用真实的对象调用方法,而是使用代理
定义一个sell接口

public interface Sell {
void sell();
void add();
}

实现这个接口

public class Vendor implements Sell{
@Override
public void sell() {
System.out.println("sell method");
}
@Override
public void add() {
System.out.println("add method");
}
}
public class DynamicProxy implements InvocationHandler {
private Object obj;
public DynamicProxy(Object obj){
this.obj = obj;
}
//proxy代表当前代理对象,method代表调用的方法,args代表参数
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("before");
Object result = method.invoke(obj, args);
System.out.println("after");
return result;
}
}
public class Main {
public static void main(String[] args) {
DynamicProxy inter = new DynamicProxy(new Vendor());
Sell sell = (Sell) (Proxy.newProxyInstance(Sell.class.getClassLoader(),new Class[]{Sell.class},inter));
sell.sell();
sell.add();
}
}

创建动态代理需要用到Proxy类的public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h)方法。
参数1:类加载器,一般是需要代理的类的类加载器
参数2:一个接口的数组
参数3:方法的实现细节

本文作者:xiaoovo

本文链接:https://www.cnblogs.com/xiaoovo/p/16984279.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xiaoovo  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑