关于适配器的理解
https://blog.csdn.net/adoocok...
这篇文章里MethodBeforeAdviceAdapter 只是实现了 AdvisorAdapter
而AdvisorAdapter本身也没有对哪个类或者接口扩展功能
为何这里算适配器模式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
楼主感觉陷入学设计模式的一个误区了,设计模式本质上是为了解决某一类问题而存在的,没必要去把设计模式想的和数学公式一样。。不同设计模式的区别在实现上可能完全一样,但解决不同问题就是不同模式;适配器模式主要是为了将A接口转为B接口的,只要他的实现目的是这个,那么就是适配器模式;因为我没用过spring,所以具体这个模式是啥我也不太知道。。但是从直观的功能来猜,感觉更多像是策略模式,不同的AdvisorAdapter实现了不同的策略
我个人的理解是,首先Spring是面向接口的框架,那决定了它肯定具备可扩展性,那么当用户遵循Spring规范自定义接口,由于不可预知因素在运行时没法协作,导致程序down了。它想出了一个或几个办法来解决这类难题,于是乎Spring一口气给你提供A、B、C、D个可扩展上层规范来解决运行时动态代理绑定这类问题。因为你的自定义接口是基于Spring的,所以肯定也遵循Spring的规范,那么当它发现你需要B的时候那么给你装配一个B的工具或对象来兼容你的接口,完成你的工作以达到和平协作,就好像按名匹配、按类型匹配一样的思想。引申出适配器模式的核心就是:数学上分类讨论思想,只不过这里分类的不是具体的某个人而是Spring。
适配器模式有两种形式,一种是类的适配器形式(使用继承实现),一种是对象的适配器形式(使用聚合实现),这里用的是类的适配器形式。
这里确实是用了适配器模式,你可以抛开spring的其他代码,之关注有关适配器的代码,就会发现。
这篇文章写的就是适配器模式,至于策略模式,不是这个文章的重点。
不过这个文章有个问题,就是适配器模式的Adaptee和Target,这里Adaptee应该是Advisor类,Target应该是MethodBeforeAdvice类,我觉得这里可能是博主的疏忽.