总结:动态代理

编程

一、什么是代理模式?

给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。

二、为什么使用代理模式?

最最最主要的原因就是,在不改变目标对象方法的情况下对方法进行增强,比如,我们希望对方法的调用增加日志记录,或者对方法的调用进行拦截,等等...

三、静态代理与动态代理" title="动态代理">动态代理的区别

从功能的角度来讲,没有区别。他们的区别主要是体现在代码重用上,动态代理不会产生很多的静态代理类。

静态代理

public class ManProxy implements IPerson{

private IPerson target;

public IPerson getTarget() {

return target;

}

public ManProxy setTarget(IPerson target) {

this.target = target;

return this;

}

@Override

public void say() {

if (target != null) {

L.d("man say invoked at : " + System.currentTimeMillis());

target.say();

}

}

}

这样我们需要新建一个ManProxy类同样实现IPerson接口,将要代理的对象传递进来,这样就可以在不修改Man的say方法的情况下实现了我们的需求。这其实就是静态代理。那你可能要问,既然有了静态代理,为什么需要动态代理呢,因为静态代理有一个最大的缺陷:接口与代理类是一对一的,有多个接口需要代理,就需要新建多个代理类,繁琐,类爆炸。

 

动态代理

 

参考:

Java 静态代理和动态代理例子

以上是 总结:动态代理 的全部内容, 来源链接: utcz.com/z/511294.html

回到顶部