什么是代理模式?(简单举例几个例子)
1、打王者段位一直打不上王者段位怎么办?请游戏代练。
2、过年回家自已抢不到高铁票怎么办?找黄牛帮我们抢票。
3、.......(生活中处处可见。)
由上可知,代理模式 就是:
给某一个对象提供一个代理对象,并由代理对象控制对 原对象的引用。
通俗滴讲就是我们常说的:中介。
有哪几种代理模式(它们的区别与优缺点)?
一般分为两种:
1、静态代理 (代理类与被代理类的关系在程序运行前就已经确定好了。)
2、动态代理 (代理类与被代理类的关系在程序运行时才确定。)
- jdk动态代理
- cglib动态代理
什么是静态代理?
在程序运行前就已经存在的代理类的字节码文件。
代理类和委托类的关系在运行前就确定了。
什么是动态代理?
在程序运行时,通过反射机制动态创建的。
静态代理 与 动态代理 优缺点
优点
实现在不改变目标对象源码情况下,对目标对象进行功能扩展。
静态代理缺点
假设项目中有多个类,则需要编写多个代理类,工作量大,不好修改,不好维护,不能应对变化。
JDK动态代理缺点
被代理的类必须实现接口,未实现接口则没办法完成动态代理。
CGLIB动态代理缺点
被代理类必须不是 final 类。