猿问

关于适配器的理解

https://blog.csdn.net/adoocok...

这篇文章里MethodBeforeAdviceAdapter 只是实现了 AdvisorAdapter
而AdvisorAdapter本身也没有对哪个类或者接口扩展功能
为何这里算适配器模式?

守着一只汪
浏览 544回答 3
3回答

狐的传说

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

胡说叔叔

适配器模式有两种形式,一种是类的适配器形式(使用继承实现),一种是对象的适配器形式(使用聚合实现),这里用的是类的适配器形式。 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
随时随地看视频慕课网APP

相关分类

Java
我要回答