简单的说,代理模式就是用户直接使用代理类,不需要知道具体实现。而代理类提供者的意图是要通过代理类控制使用方的行为。
代理模式,即控制对象的直接访问权限。通过使用代理模式可以详细控制某个(某类)对象的方法,在调用这个方法之前做前置处理,调用这个方法之后做后置处理(这也就是Spring的AOP的微观实现)。
静态代理
动态代理:
(1)JDK自带的字节码操作库实现
(2)javaassist字节码操作库的实现
(3)CGLIB第三方代理库
(4)ASM(底层使用指令,可维护性较差)
静态代理模式
举一个简单的例子,比如明星和经纪人的关系,明星的面谈、签合同、唱歌、订票以及收钱等行为(方法),其中面谈、签合同、订票以及收钱等方法都可以由经纪人代理,但是唱歌需要由明星本人执行,这种显式代理的方式就是静态代理模式。