public interface DualPin {public void electrify(int l, int n);}
- 添加被适配者接口具体实现类:TV,可以看到 TV 实现的是两相接口,所在无法直接在三项接口中使用 。
public class TV implements DualPin {@Overridepublic void electrify(int l, int n) {System.out.println("火线通电:" + l + ",零线通电:" + n);System.out.println("电视开机");}}
- 定义适配器类:三项接口适配器 TriplePinAdapter,实现了三项接口并且包含两项接口属性,在 electrify 方法中调用被适配设备的两插通电方法,忽略地线参数 e,以此来完成三项接口对两项接口的兼容 。
public class TriplePinAdapter implements TriplePin {private DualPin dualPin;public TriplePinAdapter(DualPin dualPin) {this.dualPin = dualPin;}@Overridepublic void electrify(int l, int n, int e) {// 调用被适配设备的两插通电方法,忽略地线参数edualPin.electrify(l, n);}}
- 定义客户端类
public class Client {public static void mAIn(String[] args) {DualPin dualPinDevice = new TV();TriplePin triplePinDevice = new TriplePinAdapter(dualPinDevice);triplePinDevice.electrify(1, 0, -1);}}
输出结果如下:火线通电:1,零线通电:0电视开机
总结文章插图
通过利用适配器模式对系统进行扩展后,我们就不必再为解决兼容性问题去暴力修改类接口了,转而通过适配器,以更为优雅、巧妙的方式将两侧“对立”的接口“整合”在一起,顺利化解双方难以调和的矛盾,最终使它们顺利接通 。
推荐阅读
- AI如何生成一个自己的数字人?
- 小红书博主如何赚钱的?小红书的3大变现方法
- 如何在 SQL Server 中备份和恢复数据库
- Spring中Bean的作用域Scope你知道多少?如何自定义作用域?
- 如何使用Python构建一个抄袭检测系统?
- 电脑水冷液多久换一次如何换 电脑水冷液多久换一次
- 微信怎么才可以已开双封 微信如何开双封?
- 如何鉴别真假蓝莓干视频 如何鉴别真假蓝莓干
- 如何挑选领带 怎样挑选领带
- 芒果汁弄衣服上如何清洗