您的位置:首页 > 编程语言 > Java开发

java中的静态代理和动态代理

2018-03-25 23:19 351 查看

静态代理

java中的静态代理就是上篇中设计模式的代理模式。

动态代理

代理类在程序运行时创建的代理方式叫作动态代理。

Spring框架中的AOP面向切面编程就是通过java的动态代理实现的。

java动态代理要求被代理的对象实现统一的接口。

代码实现

public class MyProxy implements InvocationHandler {

//被代理的对象(必须要实现统一的接口)
private Object target;

//提供一个接受被代理对象的构造器
public MyProxy(Object target) {
super();
this.target = target;
}

/**
* 执行目标对象的方法
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("before method...");
//执行目标对象的方法
Object result = method.invoke(target, args);

System.out.println("after method...");
return result;
}

/**
* 获取目标对象的代理对象
* @return
*/
public Object newProxyInstance() {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class[] interfaces = target.getClass().getInterfaces();
return Proxy.newProxyInstance(loader, interfaces, this);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: