代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
- 静态代理
public interface dao { public void save(); } public class daoImpl implements dao { public void save() { System.out.println("save"); } } public class daoImplProxy implement dao { public daoImpl target; public daoImplProxy(daoImpl target) { this.target = target; } public void save() { System.out.println("before save"); target.save(); System.out.println("after save"); } } public class Main { public static void main(String[] args) { daoImpl dao = new daoImpl(); daoImplProxy daoProxy = new daoImplProxy(dao); daoProxy.save(); } }
缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护。
-
jdk动态代理
代理对象,不需要实现接口,代理对象的生成,是利用jdk的api动态的在内存中构