为了账号安全,请及时绑定邮箱和手机立即绑定

关于适配器的理解

关于适配器的理解

守着一只汪 2019-01-16 04:47:03
https://blog.csdn.net/adoocok... 这篇文章里MethodBeforeAdviceAdapter 只是实现了 AdvisorAdapter而AdvisorAdapter本身也没有对哪个类或者接口扩展功能为何这里算适配器模式?
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-03-01
?
胡说叔叔

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
查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 543 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号