代理模式(Proxy)

静态代理

场景:某一物体移动方法前需要不同的描述:例如日志、时间、特殊事件、权限等的单一或多个的不同组合。
可以用继承,但是会需要多个代理类重复的拼接不同的描述,且高耦合。
可以代理类中聚合物体类,虽说耦合降低,但是拼接还是不行。
最终可以使代理类与物体类同实现接口,接口类聚合在代理类中(类似装饰模式)。
使:前后表述行为与物体,同时实现代理接口,实现被代理物体(如:坦克)的行为的前后处理,可以是代理类成链的被代理。

动态代理

jdk
java.lang.reflect
Proxy.newProxyInstance(对应类加载器,实现接口,执行处理类-实现);
自动生成代理类,并机继承代理父类,实现接口,调用第三个参数的invoke()

生成代理类是用到了asm类库(动态语言java核心),直接修改二进制代码

instrument(琴弦):class加载内存前被它拦截,直接修改二进制码(更强大更繁琐需要知道class01含义)

gclib
不需要实现接口
简单,继承被代理类,所以final被定义的类,不可被cglib代理

责任链可以完成多个代理类代理
https://blog.csdn.net/ahilll/article/details/82943836

底层也是asm

springAOP
bean工厂+**灵活装配,动态拼接,**成就java框架一哥地位

底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。
所以最底层也是asm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值