概念
适配器模式,将某个类的接口转成客户端期望的另一个接口表示,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,其别名为包装器
原理
适配器属于结构性模式
适配器分为三类:类适配器,对象适配器,接口适配器
1,将一个类的接口转换成另外一种接口,让原本接口不兼容的类可以兼容
2,从用户的角度看不到被适配者,是解耦的
3,用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法
4,用户收到反馈结果,感觉只是和目标接口交互,如图:
类适配器
1,java是单继承机制,所以适配器需要继承src类这一点是一个缺点
2,src类的方法在Adapter中都会暴露出来,也增加了使用的成本
3,由于其继承了src类,所以它可以根据需求重写src类,使得Adapter的灵活性增强了
被适配方:
适配器:
其实适配器就是拿到被被适配方后做相应的处理然后将其返回,前提需要继承被适配方
适配方:
调用:
测试:
对象适配器
1,基本思路和类的适配器模式相同,只是将Adapter类作修改,不是继承src类,而持有src类的实例,以解决兼容性的问题,即,持有src类,实现了dst类接口,完成src->dst的适配
2,根据 “合成复用原则” 在系统中尽量使用关联关系来代替继承关系
被适配方:
适配器:
跟原来不同的是,去掉了继承,使用了构造器的方式进行注入
适配方:
调用:
测试:
接口适配器
1,接口适配器(Default Adapter Pattern)也叫做缺省适配器模式
2,当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择的覆盖父类的某些方法实现需求
3,适用于一个接口不想使用其所有的方法的清空
定义一个接口方法:
定义一个抽象类,并实现接口,实现空方法
测试
适配器注意事项
1,三种命名方式,是根据src是以怎样给到Adapter(在Adapter里的形式)来命名的
2,类适配器,以类给到,在Adapter里,就是将src当做类,继承对象适配器,以对象给到,在Adapter里,将src作为一个对象,持有接口适配器。以接口给到,在Adapter里,将src作为一个接口实现
3,Adapter模式最大的作用还是将原本不兼容的接口融合在一起工作
学习来源:B站韩顺平
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112562.html