关于适配器的理解

发布于 2022-09-07 12:16:11 字数 235 浏览 33 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

懒猫 2022-09-14 12:16:11

楼主感觉陷入学设计模式的一个误区了,设计模式本质上是为了解决某一类问题而存在的,没必要去把设计模式想的和数学公式一样。。不同设计模式的区别在实现上可能完全一样,但解决不同问题就是不同模式;适配器模式主要是为了将A接口转为B接口的,只要他的实现目的是这个,那么就是适配器模式;因为我没用过spring,所以具体这个模式是啥我也不太知道。。但是从直观的功能来猜,感觉更多像是策略模式,不同的AdvisorAdapter实现了不同的策略

童话里做英雄 2022-09-14 12:16:11

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

故笙诉离歌 2022-09-14 12:16:11

适配器模式有两种形式,一种是类的适配器形式(使用继承实现),一种是对象的适配器形式(使用聚合实现),这里用的是类的适配器形式。

    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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文