静态代理很麻烦,对象每增加一个方法,静态代理都要增加一个方法。所以使用动态代理
动态代理是对对象进行代理,而是对某一个功能进行代理,只要有接口就行了,弊端必须有接口,因为接口必须有个类来实现这个接口,实现类中就可以对接口进行功能方法的增强,如果没有接口,可以用子类继承父类调用父类的方法(super.regUser();)如果每一方法都是这样继承,也很麻烦,如果能动态生成子类就可以方便多了
动态代理
public class TxProxy implements InvocationHandler {
private Object target; // 目标对象
public TxProxy(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("=== 开始事务 ===");
Object result = method.invoke(target, args); // 调用原方法
System.out.println("=== 提交事务 ===");
return result;
}
}
本文探讨了静态代理存在的问题,特别是当对象方法增多时带来的不便。为解决此问题,介绍了动态代理的概念及其优势,通过具体示例展示了如何利用动态代理在运行时动态地为对象添加新的行为。
486

被折叠的 条评论
为什么被折叠?



