Spring - (4) AOP前奏:代理模式

一.情景再现

数学计算器 :

①执行加减乘除运算
②日志:在程序执行期间追踪正在发生的活动
③验证:希望计算器只能处理正数的运算

问题:

①代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀。每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点。
②代码分散: 以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码。如果日志需求发生变化,必须修改所有模块。

为什么需要代理模式:

  • 1.当要求不能直接调用目标类方法时,选择调用另一个类方法,该类方法继承目标类方法,并且其内部封装了目标类方法起到一个中介隔离的作用,分隔代码功能,更便于管理
  • 2.开闭原则,代理还可以起到扩展目标类的作用,虽然真正的业务逻辑还是封装在目标类中,但是可以在代理类中实现缓存、日志、消息过滤等功能

二.静态代理

Spring - (4) AOP前奏:代理模式_第1张图片
Spring - (4) AOP前奏:代理模式_第2张图片
Spring - (4) AOP前奏:代理模式_第3张图片

三.动态代理

Spring - (4) AOP前奏:代理模式_第4张图片
Spring - (4) AOP前奏:代理模式_第5张图片
Spring - (4) AOP前奏:代理模式_第6张图片

你可能感兴趣的:(Spring)