使用频率:★★★★☆

一、什么是适配器

适配器是将一种接口改造成另外一种接口的一个包装类;

二、补充说明

有两种实现方式,一种是通过继承,另外一种通过组合;

使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口;

优点:符合开闭原则;适配者类和目标类解耦;代码复用;

三、角色

目标接口

适配器类

适配者类

使用者

四、例子,JAVA实现

简介:现有一个USB接口和一个PSP接口实现类,功能都是进行充电,该例子的目的就是对PSP接口实现类进行包装,使之能用USB接口充电;

目标接口,使用USB接口充电

package com.pichen.dp.structuralpattern;public interface IUSB {public void charge();}

一个USB接口的实现类(该类不属于适配器模式中的角色,只是一个对比)

package com.pichen.dp.structuralpattern;public class HPUSB implements IUSB{@Overridepublic void charge() {System.out.println("使用惠普USB接口充电~");}}

适配者类,使用PSP充电

package com.pichen.dp.structuralpattern;
public class PSP {public void pspCharge(){System.out.println("使用PSP接口充电~");}
}

适配器类(继承方式),继承PSP类,并实现IUSB接口

package com.pichen.dp.structuralpattern;
public class PSPAdapter extends PSP implements IUSB{@Overridepublic void charge() {super.pspCharge();}}

适配器类(组合方式),组合PSP对象,并实现IUSB接口

package com.pichen.dp.structuralpattern;
public class PSPAdapter2 implements IUSB{private PSP psp;public PSPAdapter2(PSP psp) {this.psp = psp;}@Overridepublic void charge() {psp.pspCharge();}}

使用者Main,测试结果

package com.pichen.dp.structuralpattern;public class Main {public static void main(String[] args) {IUSB usb = new HPUSB();usb.charge();IUSB usb_psp = new PSPAdapter();//继承usb_psp.charge();IUSB usb_psp2 = new PSPAdapter2(new PSP());//组合usb_psp2.charge();}
}

打印结果:

使用惠普USB接口充电~
使用PSP接口充电~
使用PSP接口充电~

转载于:https://www.cnblogs.com/chenpi/p/5188384.html

【设计模式】适配器模式相关推荐

  1. Python设计模式-适配器模式

    Python设计模式-适配器模式 基于Python3.5.2,代码如下 #coding:utf-8class ACpnStaff:name = ""id = "" ...

  2. Java | 设计模式-适配器模式

    继代理模式后又来到适配器模式啦,想看之前的也有哦.持续更新中哦.让我们一起加油吧兄弟们,干他. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 你好,如果喜欢,请一起坚持!! ...

  3. java设计模式适配器模式_Java中的适配器设计模式

    java设计模式适配器模式 适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码. 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比. 在设计一 ...

  4. 设计模式适配器模式_适配器设计模式示例

    设计模式适配器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...

  5. 设计模式适配器模式_21世纪的设计模式:适配器模式

    设计模式适配器模式 这是我的演讲的第三部分," 21世纪的设计模式" . 适配器模式桥接世界. 在一个世界中,我们有一个概念的界面. 在另一个世界,我们有不同的界面. 这两个接口有 ...

  6. java设计模式适配器模式_Java解释器设计模式

    java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...

  7. Java代码审计-设计模式-适配器模式

    Java设计模式-适配器模式(Adapter Pattern) 目录 什么是适配器模式 适配器模式的3种类型 JavaSE适配器模式的应用 Struts2适配器模式的应用 适配器模式是一种" ...

  8. 【设计模式】Java设计模式 - 适配器模式

    [设计模式]Java设计模式 - 适配器模式

  9. C++设计模式——适配器模式(adapter pattern)

    一.原理讲解 适配器模式别名为包装器(wrapper),分为类适配器(通过多继承实现).对象适配器(组合方式实现),由于类适配器比较少用,本文主要讲解用的比较多的对象适配器. 1.1意图 将一个类的接 ...

  10. [Head First设计模式]身边的设计模式——适配器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

最新文章

  1. LuoguP2617 Dynamic Rankings (动态主席树学习理解)
  2. Android 依赖库发布(上传 Library 到 JCenter)gradle最高支持4.4
  3. 先验概率,后验概率,最大似然估计,最大后验概率
  4. 01背包模板、全然背包 and 多重背包(模板)
  5. C#中使用SqlBulk百万级数据秒级插入
  6. (王道408考研操作系统)第四章文件管理-第一节9:文件系统的层次结构
  7. Linux文件系统管理命令(第二版)
  8. Netty工作笔记0065---WebSocket长连接开发4
  9. Struts2入门到放弃
  10. python是不是都是英语_python为什么最近很流行?各种应用文档全是英文的吗?
  11. Matlab滤波函数
  12. 苹果的airplayer推荐
  13. 华硕老毛子Padavan使用IPV6+Aliddns远程管理路由
  14. java pointer_Java EE 8 JSON Pointer讲解
  15. 鸽巢排序Pigeonhole sort
  16. ora-22858:数据类型的变更无效 for clod
  17. Linux实训项目——第十一章:基础DNS服务器与主从同步
  18. linux 睡眠到硬盘,Linux 休眠原理与实现
  19. 【面经】微软SWE暑期实习
  20. 初识MIMO-OFDM(三):完整的MIMO-OFDM仿真

热门文章

  1. 创建运行时类的对象--Class.newInstance()
  2. 2020 Kyligence 面经
  3. python从键盘输入一个字符串、将小写字母_# 每日一道面试题 # 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。...
  4. arduino的esp32程序无法上传_【arduino】arudino开发ESP32 SPIFFS文件上传方法
  5. 代码整洁之道读书笔记----第一章---综述--第一节-混乱代码和华丽的新系统
  6. 为什么xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
  7. 算法第四版_第二章_练习题_2.1.1~2.1.12
  8. t14m4t:一款功能强大的自动化暴力破解工具
  9. Raki的网络流24题题解总结
  10. 实现基于Keepalived高可用集群网站架构的多种方法