代理模式
前言
代理模式:不直接访问对象,而是通过代理访问对象;
应用场景(举例):
1,对象很忙,没时间;对象现在在月球,不方便;
如:马上相逢无纸笔,凭君传语报平安,通过别人来传话。
2,对象自己干效果不好,需要代理来增强自己;
如:慈禧太后垂帘听政,小皇帝年龄太小,通过别人来处理”江山社稷、天下大事”;
3,对象的能力很多,但只对外开放部分能力;
如:大山里有林业、矿产、水资源等,如果大山的矿产和水资源需要储备,而树林可以砍伐,
你可以找林业局(大山的林业代理)申请砍伐树木,但是却无法开发其他资源。
一、代理模式举例
二、动态代理
总结:
代理模式:
动态代理总结:
通过java.lang.reflect的Method.invoke(Object, args)实现动态的执行代理方法:
动态代理一般有两种实现:
1,接口;内存中新生成的class为该接口的实现类;
2,继承;cglib使用asm在内存中新生成的class为对象的子类;另外,需要导入cglib的jar包。
代理模式和装饰器模式一个区别