一、什么是代理模式
代理模式就是一个代理类来控制访问另外一个对象,主要分三种:静态代理,动态代理,Cglib代理。
二、存在场景
1. 远程代理:为一个对象在不同的地址空间提供局部代表,这样系统可以将Server部分的事项隐藏。
2. 虚拟代理:使用一个代理对象表示一个十分耗资源的对象并在真正需要时才创建。
3. 安全代理:用来控制真实对象访问时的权限。
4. 智能指引:当调用真实的对象时,代理处理另外一些事,比如计算真实对象的引用计数,当该对象没有引用时,可以自动释放它;或者访问一个实际对象时,检查是否已经能够锁定它,以确保其他对象不能改变它。
三、设计思路
1) 静态代理
静态代理:代理和被代理对象在代理之前是确定的。他们都实现相同的接口或者继承相同的抽象类。
UML图:
过程:
1) 1个接口proxyinterface,一个proxy实现接口,一个被代理类real也实现这个接口
2) proxy中含有real的引用,并在接口的方法中融入real的方法
3) 客户类调用proxy,实际上是proxy+real在工作,核心是real在工作
2) 动态代理
3) Cglib代理
四、代码实现
见我的github:代理模式学习笔记
五、参考博客