代理模式的三种
1.静态代理
2.动态代理(也叫JDK代理)
3.Cglib代理
代理模式概念:
代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。
代理模式个人理解:
代理模式,<代理>顾名思义暂时代替某某担任某些责任。比如,明星的经纪人。当明星有一个需求比如:从上海出发到北京。那么经纪人就会安排明星:从上海
出发坐飞机到北京。 这里面的《坐飞机》就是经纪人的功能了。
用一个简单的java代码来理解一下代理模式(https://www.cnblogs.com/boboxing/p/8126046.html)
一 静态代理
静态代理个人理解:
代理类和目标类都实现了同一个接口,代理类在没有修改目标类代码的同时,也进行了方法拓展。
但是如果代理类太多,要新增一个方法将会很难维护的~
二 动态代理(JDK代理)
动态代理也叫做:JDK代理,接口代理。
代理对象不需要实现接口,但是目标对象一定要实现接口,否则不能用动态代理
代理类所在包:java.lang.reflect.Proxy
除了上面这种方式,还可以运用工厂模式进行动态代理:
个人理解:
动态代理不必像静态代理那样实现很多代理类,这一点倒是方便了。但是记得被代理的对象一定要实现接口!
三 Cglib代理(子类代理)
静态代理和动态代理有一个共同点,就是目标对象一定是实现了一个接口。
但是Cglib就不必了,目标对象只是一个单独的对象,并没有实现任何的接口,这个时候就可以使用以目标对象子类的方式类实现代理。
原理:在内存中构建一个子类对象从而实现对目标对象功能的扩展.
—具体实现待写