Spring的AOP底层实现原理之代理模式详解-----Spring框架

代理模式是23种设计模式之一,是GOF的设计模式之一
面向切面编程AOP底层就是代理模式
问题:代理模式是干什么的?有什么用?
对代理模式的理解场景
1.拍电影演员找替身演员,替身演员去代替演员完成表演(演员为什么要找替身)(为什么要使用代理模式)
2.怕实例信息被修改或误操作(保护自己),自己完成不了这个需求,功能增强(完成不了需求)
3.在Java程序中的代理模式作用,第一个作用:当一个对象需要受到保护的时候,可以考虑使用代理对象,去完成某个行为
当一个对象无法完成某功能时,需要功能增强的时候,可以考虑找一个代理进行功能增强
代码模式有三大角色,第一个角色是目标对象,第二个是代理对象,第三个角色目标对象和代理对象的公共接口(要求两者有相同的行为动作)
(因为不想让观众知道这是替身,观众即客户端)(使用代理模式时,客户端时无法察觉到的,客户端在使用该对象时就像在使用原对象)
客户端面向接口编程,所以察觉不到使用代理
A对象无法直接和B对象进行交互时,也可以使用代理模式来解决
A对象B对象无法直接交互时,使用代理
对象需要增强功能时使用代理模式完成更多功能
对象需要保护时,使用代理对象代替源对象
代理模式属于23种设计模式,属于结构形设计模式
代理模式的作用,为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个客户不想或者不能直接引用一个对象
此时使用一个代理的第三者来实现间接引用,代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理
去掉客户不应该看到的内容或者添加客户需要的额外服务,通过引入一个新的对象来实现对真实对象的操作或将新对象作为真实对象的
一个替身(代理类,目标类,公共接口)
静态代理,动态代理

代理模式是23种设计模式之一,是GOF的设计模式之一
面向切面编程AOP底层就是代理模式
问题:代理模式是干什么的?有什么用?
对代理模式的理解场景
1.拍电影演员找替身演员,替身演员去代替演员完成表演(演员为什么要找替身)(为什么要使用代理模式)
2.怕实例信息被修改或误操作(保护自己),自己完成不了这个需求,功能增强(完成不了需求)
3.在Java程序中的代理模式作用,第一个作用:当一个对象需要受到保护的时候,可以考虑使用代理对象,去完成某个行为
当一个对象无法完成某功能时,需要功能增强的时候,可以考虑找一个代理进行功能增强
代码模式有三大角色,第一个角色是目标对象,第二个是代理对象,第三个角色目标对象和代理对象的公共接口(要求两者有相同的行为动作)
(因为不想让观众知道这是替身,观众即客户端)(使用代理模式时,客户端时无法察觉到的,客户端在使用该对象时就像在使用原对象)
客户端面向接口编程,所以察觉不到使用代理
A对象无法直接和B对象进行交互时,也可以使用代理模式来解决
A对象B对象无法直接交互时,使用代理
对象需要增强功能时使用代理模式完成更多功能
对象需要保护时,使用代理对象代替源对象
代理模式属于23种设计模式,属于结构形设计模式
代理模式的作用,为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个客户不想或者不能直接引用一个对象
此时使用一个代理的第三者来实现间接引用,代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理
去掉客户不应该看到的内容或者添加客户需要的额外服务,通过引入一个新的对象来实现对真实对象的操作或将新对象作为真实对象的
一个替身(代理类,目标类,公共接口)
静态代理,动态代理

package bean;

public interface Actor
{
    void show();
}
package bean;

public interface Actor
{
    void show();
}
package bean.impl;

import bean.Actor;

public class RealActor implements Actor
{
    @Override
    public void show() {

    }
}
package bean.impl;

import bean.Actor;

public class RealActor implements Actor
{
    @Override
    public void show() {

    }
}
package bean.impl;

import bean.Actor;

public class FakeActor implements Actor {
    @Override
    public void show() {

    }
}
package bean.impl;

import bean.Actor;

public class FakeActor implements Actor {
    @Override
    public void show() {

    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值