3 回答

狐的传说
TA贡献1804条经验 获得超3个赞
我个人的理解是,首先Spring是面向接口的框架,那决定了它肯定具备可扩展性,那么当用户遵循Spring规范自定义接口,由于不可预知因素在运行时没法协作,导致程序down了。它想出了一个或几个办法来解决这类难题,于是乎Spring一口气给你提供A、B、C、D个可扩展上层规范来解决运行时动态代理绑定这类问题。因为你的自定义接口是基于Spring的,所以肯定也遵循Spring的规范,那么当它发现你需要B的时候那么给你装配一个B的工具或对象来兼容你的接口,完成你的工作以达到和平协作,就好像按名匹配、按类型匹配一样的思想。引申出适配器模式的核心就是:数学上分类讨论思想,只不过这里分类的不是具体的某个人而是Spring。

胡说叔叔
TA贡献1804条经验 获得超8个赞
适配器模式有两种形式,一种是类的适配器形式(使用继承实现),一种是对象的适配器形式(使用聚合实现),这里用的是类的适配器形式。
public MethodInterceptor getInterceptor(Advisor advisor) {
MethodBeforeAdvice advice = (MethodBeforeAdvice) advisor.getAdvice();
return new MethodBeforeAdviceInterceptor(advice);
}
这里确实是用了适配器模式,你可以抛开spring的其他代码,之关注有关适配器的代码,就会发现。
这篇文章写的就是适配器模式,至于策略模式,不是这个文章的重点。
不过这个文章有个问题,就是适配器模式的Adaptee和Target,这里Adaptee应该是Advisor类,Target应该是MethodBeforeAdvice类,我觉得这里可能是博主的疏忽.
MethodBeforeAdvice类:Adaptee
Adapter类接口:Target
MethodBeforeAdviceAdapter类,Adapter
添加回答
举报
0/150
提交
取消