设计模式-代理模式

概念:二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标

方法的时候,不再是直接对目标方法进行调用,而是通过代理类 间接调用。让不属于目标方法核心逻辑

的代码从目标方法中剥离出来—— 解耦。调用目标方法时先调用代理对象的方法,减少对目标方法的调

用和打扰,同时让附加功能能够集中在一起也有利于统一维护。

个人理解

为分离核心代码和非核心代码,创建一个代理类,

代理类中创建一个核心代码(核心功能)中的方法,

由代理类来间接调用核心代码中的方法,

再将非核心代码(附加功能)写在代理类中,

方便进行对附加功能进行统一维护

减少对核心功能的打扰

在通过代理模式进行功能增强的时,

不仅仅只有核心功能执行前后,

在catch,finally中都能增加附加功能

使用前

使用代理模式后

生活中的代理

广告商找大明星拍广告需要经过经纪人

合作伙伴找大老板谈合作要约见面时间需要经过秘书

房产中介是买卖双方的代理

相关术语

代理:将非核心逻辑剥离出来以后,封装这些非核心逻辑的类、对象、方法。

目标:被代理”套用”了非核心逻辑代码的类、对象、方法。

静态代理(一般不用)

静态代理确实实现了解耦,但是由于代码都写死了,完全不具备任何的灵活性。就拿日志功能来

说,将来其他地方也需要附加日志,那还得再声明更多个静态代理类,那就产生了大量重复的代

码,日志功能还是分散的,没有统一管理。

提出进一步的需求:将日志功能集中到一个代理类中,将来有任何日志需求,都通过这一个代理

类来实现。这就需要使用动态代理技术了。

动态代理

动态代理有两种(AOP底层用动态代理实现)
1.jdk动态代理:

要求必须有接口,最终生成的代理类和目标类实现相同的接口_
_
在com.sun.proxy包下,类名为$proxy2

2.cglib动态代理_
_
会继承目标类,并且和目标类在相同的包下

Original: https://www.cnblogs.com/bieyinan/p/16697164.html
Author: 别亦难
Title: 设计模式-代理模式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685830/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球