代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。
意图
提供其他对象一个代理或占位符,来控制该对象的访问权限。
静态代理
优点:业务类只需要关注逻辑本身,保证了业务类的重用性。这是代理的共有优点
缺点:1.代理对象的一个借口只服务一种类型的对象,如果要代理的方法很多,
就要为每一种方法苏进行代理,静态代理在程序规模大是就无法胜任
2.如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现
此方法。增加了代码维护的复杂度
动态代理
优点:最大的好处是接口中声明的所有方法都被转移到调用处理器一个集中的方法中处理(invocation Handler.invoke)。
这样,在接口方法数量比较多的时候,可以进行灵活处理,而不需要想静态代理那样每一个方法进行中转。
缺点:始终无法摆脱仅支持interface代理的局限