6.12 代理模式
参考资料:https://blog.csdn.net/weixin_38003389/article/details/88017747
https://www.runoob.com/design-pattern/proxy-pattern.html
一、什么是代理模式
1.1 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
很好理解,你去买房子可以自己了解地区的楼盘,自己找房东调查卖楼的价格,但这样需要浪费时间。现实生活中我们可以直接找中介或者APP找到相应的房源,省下很多自己去底层了解的东西。代理对象可以在客户端和目标对象之前起到中介的作用。
1.2 代理模式分类:
静态代理:涉及到一个接口、一个接口实现类、还有一个修饰这个接口实现类的代理类,分别对应着租房的动作,房东,中介三者的关系。
JDK动态代理:动态代理不用我们去手编写代理类,在运行时,动态的在内存中生产代理类。
第三方代理技术Cglib动态代理:可以对任何类生成代理,代理的原理是可以对目标对象接口实现代理,也可以进行继承代理。
二、代理模式的优缺点
2.1 优点:
1、职责清晰。 2、高扩展性。 3、智能化。
2.2 缺点:
1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
三、代理的实例场景
1.Windows 里面的快捷方式。
2.去代售点买火车票。
3.找中介买房
4.在Spring的AOP编程中:如果加入容器的目标对象有实现接口,用JDK代理、如果目标对象没有实现接口,用Cglib代理。
努力不一定成功,但不努力一定会失败~