所谓代理,是指具有与被代理对象相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理。
通俗一点就是说我想找个女朋友,但是要去约会,要和女孩子玩才能够找到女朋友,但是我是一个很害羞的人,所以我就去找媒婆给我找一个现成的女票,我不用去关系媒婆事怎么找的,用什么方式找的,我就继续打我的游戏,做我的事情,
代理模式又分为动态代理和静态代理,动态代理分为(jdk动态代理和cglid动态代理)
代理模式是面向接口的
1,静态代理
代码:
1-1接口方法
1-2代理对象
1-3目标对象
代理对象和目标对象都实现了接口,但是代理对象并不去做真正的逻辑处理,而是委托目标对象去做,它就自己做自己的其他事情(Spring AOP就很好的利用了代理模式)
1-4客户端(主函数模拟)
由上面的静态代理种可以看出它其实很不灵活,当我接口里面新增方法的时候,代理(Proxy)里面就要新增方法,不然调用不了,这样代码就会很冗余
所以引入了动态代理模式,动态代理的核心技术是反射,
2,动态代理(jdk)
2-1代理类
与前面的静态代理不同的是,当借口新增方法的时候我不需要手动的在代理类(Proxy)里去新增方法,我只需要通过反射的方式动态的去调用目标对象的方法,用jdk代理需要实现 InvocationHandler() 接口
2-2客户端(主函数)
3.cglib代理
通过继承的方式来实现,具体实现以后作更新