概述:

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

类型:结构型模式。

类图:

适用性:

1、你想使用一个已经存在的类,而它的接口不符合你的需求。

2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。

参与者

1、Target (Three Hole)

定义Client使用的与特定领域相关的接口。

2、Client (Hotel)

与符合Target接口的对象协同。

3、Adaptee (TwoHole)

定义一个已经存在的接口,这个接口需要适配。

4、Adapter (Three_Swith_Two_Adapter)

对Adaptee的接口与Target接口进行适配。

例子: 使用   三孔插孔  转换为 二口插孔的例子 。 假如你外出旅游带的手机充电器是二孔插头,但是入住的旅店只有三孔插孔(不考虑三孔可以插二孔的情况),,,这时候你下楼   买了一个   三孔转化为二孔的适配器

package com.zq.designpattern.adatper;/*** Created by zhengshouzi on 2015/10/26.*/
//三孔插座的标准
interface ThreeHole{void doSomething();}
//三孔插座的实现
class ThreeHoleImpl implements ThreeHole{@Overridepublic void doSomething() {System.out.println("使用    三孔   充电");}
}
//两孔插座的标准
interface TwoHole{void doSomething();
}
//两孔插座的实现
class TwoHoleImpl implements TwoHole{@Overridepublic void doSomething() {System.out.println("使用    二孔     充电");}
}//三孔 转 二孔的适配器
class Three_Swith_Two_Adapter implements ThreeHole {private TwoHole twoHole;//此适配器 必须要有 一个二孔的插口才能工作public  Three_Swith_Two_Adapter(TwoHole twoHole){this.twoHole = twoHole;}@Overridepublic void doSomething() {twoHole.doSomething();}
}
class Hotel{//旅馆默认是三孔的充电器private ThreeHole threeHole = new ThreeHoleImpl();//给旅馆加上适配器public void setSwitcher(ThreeHole threeHole){this.threeHole = threeHole;}//充电public void charge(){threeHole.doSomething();}}public class AdapterPattern {public static void main(String[] args) {//找了一个旅馆住下Hotel hotel = new Hotel();//如果你是三孔的充电器,开始充电,直接充电hotel.charge();//如果你带的是二孔的充电器,拿出二孔的充电器,发现没法充电TwoHole twoHole = new TwoHoleImpl();//这时候你下楼买一个  三孔  转换  二孔的适配器//适配器的构造函数,说我需要一个二孔的插头插在我上面ThreeHole threeHole = new Three_Swith_Two_Adapter(twoHole);//这个时候将适配器插在旅馆的  三孔排插上hotel.setSwitcher(threeHole);//开始充电hotel.charge();}
}


看了这个代码,你可以试试自己写一个把   二孔转化为 三孔的适配器。

java 适配器模式 详解(带电源插座适配 例子)相关推荐

  1. java 适配器_java 适配器模式 详解(带电源插座适配 例子)

    package com.zq.designpattern.adatper; /** * Created by zhengshouzi on 2015/10/26. */ //三孔插座的标准 inter ...

  2. Java适配器模式详解

    文章目录 设计模式分类 适配器模式 `实例:` 小结 编程之外 设计模式分类 设计模式分为三种类型,共23种:这里先暂时只分享适配器模式的学习 创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式 ...

  3. Java适配器模式详解和实际应用

    一.了解适配器模式 1.什么是适配器模式 适配器模式将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容.这种模式的主要作用就是把原本不兼容的接口,通过适配修改做到统一. 这个模式可以通过创建 ...

  4. Java 适配器模式详解

    什么是适配器模式? 适配器模式是一种结构型设计模式,其用途是将一个类的接口转换成客户端所期望的另一种接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器模式的实现方式 适 ...

  5. 设计模式之适配器模式详解(附应用举例实现)

    文章目录 1 适配器模式介绍 2 适配器模式详解 2.1 适配器模式结构 2.2 适配器模式实现 2.2.1 类适配器 2.2.2 对象适配器 2.3 适配器模式应用举例 3 缺省适配器模式 4 双向 ...

  6. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  7. Java :反射详解

    Java 反射详解 目录 Java 反射详解 1.什么是反射? 2.反射能做什么? 3.反射的具体实现 4.根据反射获取父类属性 4.反射总结 1.什么是反射? Java反射就是在运行状态中,对于任意 ...

  8. Java 多线程详解(五)------线程的声明周期

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...

  9. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

最新文章

  1. python使用textwrap包在已经生成的长字符串中嵌入回车符实战
  2. 北京交大计算机学院王浩业,双胞胎双双“吹”进北交大
  3. Android Linux下的常用命令行
  4. C语言经典例98-将字符转为大写字母并写入文件
  5. 是什么使你留在你现在的公司?
  6. C语言递归算法将十进制转换为二进制(附完整源码)
  7. 精武风云全线公映,挂马欺诈网站同步上线
  8. linux 使用碎碎记
  9. unity, 欧拉角(euler angle)
  10. SPI子系统分析之一:框架
  11. grafana导入json文件没有数据_基于SpringBoot将Json数据导入到数据库
  12. C语言计算器详细教程(四则运算、小数、括号)
  13. PDF文件怎么解除密码?教你两招很容易解除
  14. php读取excel 报错_PHP读取Excel里的文件
  15. python评分卡3_woe与IV分箱实现
  16. word按标题自动生成序号
  17. 开机直接进入键盘布局_win8.1系统苹果电脑开机卡在选择键盘布局界面的解决方法...
  18. 158、如何分辨出一台PoE交换机是否标准PoE供电
  19. Glove模型的原理与代码
  20. 帝国cms【官方教程系列教程一】 首页模板制作

热门文章

  1. 探访高铁线上的守遂人 加强安保护春运
  2. 理财帝教你人生新活法之–假设你月入只有2000元…
  3. PyTorch-softmax,argmax,soft-argmax
  4. css3宽度变大动画_电工不会仪表?太尴尬了。14种动画让你轻松掌握各种流量计工作原理。...
  5. 史上最强最全网站资源整理
  6. easycode不推荐使用_[LaTeX 发行版] 2018年,为什么不推荐使用 CTeX 套装了
  7. 对比onmouseover和onmouseenter
  8. 【蓝桥杯】15年初赛 垒骰子,矩阵快速幂
  9. 数商云:击败HM,颠覆ZARA,千亿巨头Shein如何快速崛起?
  10. 调用Web Service实现天气预报