背景:买了一台电视机,电源插头是两相插孔的,但是家里只有三孔的插座。
下面请看代码:

三相插孔接口

public interface TriplePin {//参数代表火线,零线,地线public void electrify(int l,int n,int e);
}

两相插孔接口

public interface DualPin {//没有地线public void electrify(int l,int n);
}

电视机类

public class TV implements DualPin {@Overridepublic void electrify(int l, int n) {System.out.println("火线通电:"+l+",零线通电:"+n);System.out.println("电视开机");}
}

电视机实现了两相插孔接口,无法插入家里的三相插孔。

通用适配【对象适配】

用一个适配器做转换,适配器中嵌入一个两相插孔设备,然后在三相插头通电方法中,调用接入的两插设备,完成了三相转两相。

public class Adapter implements TriplePin {private DualPin dualPinDevice;//创建适配器时,把两插设备先接入进来public Adapter(DualPin dualPinDevice){this.dualPinDevice=dualPinDevice;}//@Overridepublic void electrify(int l, int n, int e) {//调用被适配器设备的两插通电方法,忽略地线参数edualPinDevice.electrify(l,n);}
}

客户端Client

public class Client {public static void main(String[] args) {//构造两插电视机DualPin dualPinDevice = new TV();//用适配器打通两端TriplePin triplePinDevice = new Adapter(dualPinDevice);//调用三插通电标准triplePinDevice.electrify(1,0,-1);}
}

专属适配【类适配】

//电视机专属适配器类TVAdapter
public class TVAdapter extends TV implements TriplePin  {@Overridepublic void electrify(int l, int n, int e) {super.electrify(l,n);}
}

Client客户端

public class Client {public static void main(String[] args) {TriplePin tvAdapter = new TVAdapter();tvAdapter.electrify(1,0,-1);}
}

分析

类适配器是继承于电视机的子类,这种继承关系让它固化成一种专属适配器,造成了继承耦合,如果我们要适配其他的电器,就不得不再写其他的专属适配器,造成代码冗余,但是用起来确实更方便。

对象适配器结构介绍

  • 目标接口:客户端要使用的目标接口标准,对应上面的三插接口TriplePin.
  • 适配器:实现了目标接口,将被适配器的接口转换成目标接口。
  • 被适配者:被适配者的接口标准目前不能兼容目标接口。
  • 客户端:目标接口的使用者。

适配器模式【插头与插孔】相关推荐

  1. 电脑主板跳线_电脑基础进阶必学知识,详解电脑主板跳线!

    在DIY装机时新手总会有不同的问题,虽然目前网上流传着各种版本的教学文章或者视频,但是细致的小技巧讲解还是有限,不少网友在装机的时候虽然大致明白各个硬件的组合,但是在跳线的环节可以难住了不少的人,也挡 ...

  2. 致:测试工程师们!超2000种连接件,下载96页完整选型目录!

    Pomona--60年高品质连接器和测试附件,高可靠信号的解决之道! 任何需要从设备一端将信号传输到另一端的工程师(设计工程师.测试工程师等): 需要将有不同接头的设备或无接头的设备相连的工程师(电子 ...

  3. 如何选择PDU电源配套机柜?

    前言: 在夏季,不仅要确保数据中心在高温多雨天气下安全.稳定的运维,还要承受降低企业总体运营成本的压力,然而很多机房招投标中并没有将PDU与UPS.列头柜.机柜等设备一样单列,要求PDU参数也非常不明 ...

  4. 【视觉盛宴三】不好意思,这些线材接口的横截面真的没见过

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文作者 | 晓宇哥哥 转自公众号 | 芯片之家 作者:TubeTimeUS  排版 ...

  5. 电缆的验证、鉴定和认证应该选择什么测试工具

    在电缆的测试安装时,有以下几种测试工具选择:验证.鉴定及认证.当您要进行电缆认证时,不同测试工具的部分功能会有重叠,但可以学习以下几个问题,以帮助您选择正确的测试工具. (1)电缆验证测试连接是否正确 ...

  6. 利用福禄克DSX2-5000 CH解决双绞线布线中常见的故障

    双绞线布线中最常见的故障原因包括安装错误.在劣质组件(电缆.连接器.跳线等)中发现的缺陷.已安装电缆的损坏以及测试仪设置不正确,但有时技术人员想知道链路故障的具体原因 那么基于性能参数测试失败的原因都 ...

  7. 硬件知识:电脑组装机必备的知识梳理

    今天小编给大家分享电脑组装机必备的知识,希望对大家能有所帮助! 确实机箱内部的硬件连接中,大多数线材的插头和插孔都是独特的,比如主板的20+4pin,CPU的4+4pin都不能通用,多接口中方口和圆口 ...

  8. 硬件:电脑基础进阶必学知识,详解电脑主板跳线!

    在DIY装机时新手总会有不同的问题,虽然目前网上流传着各种版本的教学文章或者视频,但是细致的小技巧讲解还是有限,不少网友在装机的时候虽然大致明白各个硬件的组合,但是在跳线的环节可以难住了不少的人,也挡 ...

  9. 硬盘和显卡的访问与控制

    离开主引导扇区,前方是操作系统.         和主引导扇区程序一样,操作系统也位于硬盘是上.操作系统安装到硬盘上,安装过程不但要把操作系统的指令和数据写入硬盘,通常还需更新主引导扇区内容.    ...

  10. 2021年危险化学品经营单位主要负责人最新解析及危险化学品经营单位主要负责人新版试题

    题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:危险化学品经营单位主要负责人最新解析根据新危险化学品经营单位主要负责人考试大纲要求,安全生产模拟考试一点通将危险化学品经营单位主要 ...

最新文章

  1. Servlet运行原理以及生命周期
  2. 细鹏系列裸金属服务器多核算力,鲲鹏凌云,开启多元计算新架构_外发版(40页)-原创力文档...
  3. 高并发编程-通过volatile重新认识CPU缓存 和 Java内存模型(JMM)
  4. 嵌入式开发过程中结构体字节对齐问题pragma pack(1)
  5. golang http Specifically check for timeout error
  6. 设置编译out_matlab2017a与 CCS 6.2联调设置
  7. 淘宝美工设计初学必会技能之PSD分层模板
  8. Rpc远程调用框架的设计与实现(1)
  9. 小学生也能看懂的ArrayList底层原理
  10. Freecms商业版 oracle添加信息时报错”转换请求无法实施或不合理”
  11. SharePoint 2013 Step by Step——How to Create a Lookup Column to Another Site(Cross Site) 阅读目录...
  12. spriteatlas 白屏的问题_Discuz白屏问题解决思路
  13. WINDOWS PHONE死于自己不兼容
  14. visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
  15. 为什么不同文化中都会发现圆形房屋
  16. amap高德地图应用(el-amap-marker坐标点;el-amap-info-window信息窗体;el-amap-polyline折线、折线颜色,宽度、实虚线等)
  17. 张飞硬件90天学习笔记——第01天个人记录,完整请看我的个人简介/主页
  18. mysql 复制frm_通过拷贝frm myd myi opt文件来实现mysql的备份和还原
  19. 域名(DNS)原理及解析过程详解
  20. win10 任务栏全透明一步直达

热门文章

  1. 辩证唯物主义和历史唯物主义思维导图 - 圣才
  2. Oracle12c使用AFD(Oracle ASM Filter Driver)特性部署集群的配置方法
  3. mysql 临时表权限_MySQL临时表浅析
  4. 计算机系统复制文件,电脑没法复制文件?教您解决电脑没法复制文件
  5. 小可乐手机救砖+恢复通信录
  6. UBUNTU 7.04安装后的配置
  7. win10下安装Ubuntu16.04双系统 (gtx1050ti)(联想legion)
  8. 台式计算机的cpu,台式电脑处理器(CPU)性能排行榜
  9. 组策略 禁止用户策略下发到指定计算机,使用组策略禁止域用户运行特定程序...
  10. VMware 16 Pro安装MacOS Mojava 10.14