您的位置:首页 > 其它

动态代理模式总结

2016-07-07 21:34 337 查看
优点:动态代理模式相比于静态代理模式更灵活

动态代理模式不用显示的让它与真实主题类实行相同的接口,而是把这种实现推迟到了运行时。

一个典型的动态代理模式可以分为三个步骤

public class DynProxyObj implements InvocationHandler{
private Object obj;
public DynProxyObj(Object obj){
this.obj = obj;
}

}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {

Object object = method.invoke(obj, args);
return object;
}

}

1.通过实现InvocationHandler接口创建自己的调用处理器InvocationHandlerhandler = new InvocationHandlerImpl(被代理对象);
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Teacher tea = new Teacher("小张");
DynProxyObj dpo = new DynProxyObj(tea);
//动态代理实现
Subject dyn = (Subject)Proxy.newProxyInstance(tea.getClass().getClassLoader(),tea.getClass().getInterfaces() , dpo);
dyn.teach();
}
}
2、通过构造函数创建代理类实例,此时需将调用处理器对象作为参数被传入

3、通过Interface对象执行指定事物
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: