结构图:

Readme.txt

场景:在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题
定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
该模式的主要优点如下。
客户端通过适配器可以透明地调用目标接口。
复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。其缺点是:对类适配器来说,更换适配器的实现过程比较复杂。
package com.xingsfdz.adapter;/*** * @类名称 Target.java* @类描述 <pre>定义一个标准,让适配器来实现这个接口,实现这个标准</pre>* @作者  xingsfdz xingsfdz@163.com* @创建时间 2019年5月9日 下午10:13:21* @版本 1.00** @修改记录* <pre>*     版本                       修改人        修改日期         修改内容描述*     ----------------------------------------------*     1.00   xingsfdz    2019年5月9日             *     ----------------------------------------------* </pre>*/
public interface Type_C {public void run();}
package com.xingsfdz.adapter;/*** * @类名称 Adaptee.java* @类描述 <pre>适配者:被适配的对象</pre>* @作者  xingsfdz xingsfdz@163.com* @创建时间 2019年5月9日 下午10:19:15* @版本 1.00** @修改记录* <pre>*     版本                       修改人         修改日期         修改内容描述*     ----------------------------------------------*     1.00   xingsfdz    2019年5月9日             *     ----------------------------------------------* </pre>*/
public class Adaptee {public void Charge(){System.out.println("做具体的业务逻辑.充电...");};}
package com.xingsfdz.adapter;/*** * @类名称 Adapter.java* @类描述 <pre>适配器:具体去执行接口标准的厂商,可以是很多不同的厂商,但核心都必须实现run方法,另也可以添加一些自己花里胡哨的东西,比如皮肤</pre>* @作者  xingsfdz xingsfdz@163.com* @创建时间 2019年5月9日 下午10:21:30* @版本 1.00** @修改记录* <pre>*     版本                       修改人       修改日期         修改内容描述*     ----------------------------------------------*     1.00   xingsfdz    2019年5月9日             *     ----------------------------------------------* </pre>*/
public class FactoryA extends Adaptee implements Type_C{@Overridepublic void run() {this.Charge();}}
package com.xingsfdz.adapter;/*** * @类名称 ClientTest.java* @类描述 <pre>客户端测试:比如小米手机使用Type-c充电</pre>* @作者  xingsfdz xingsfdz@163.com* @创建时间 2019年5月9日 下午10:26:39* @版本 1.00** @修改记录* <pre>*     版本                       修改人      修改日期         修改内容描述*     ----------------------------------------------*     1.00   xingsfdz    2019年5月9日             *     ----------------------------------------------* </pre>*/
public class XiaomiPH {public static void main(String [] args) {System.out.println("客户端开始开始使用Type-c充电");Type_C mi = new FactoryA();mi.run();//这样就把电通过Type-c传输到手机了System.out.println("客户端开始使用Type-c充电完毕");}
}

设计模式之-适配器模式相关推荐

  1. C#设计模式(7)——适配器模式(Adapter Pattern)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将"将现存的对象" ...

  2. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabcd 介绍 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本 ...

  3. 跟JBPM学设计模式之适配器模式

    跟JBPM学设计模式之适配器模式 模式简介 适配器模式(Adapter),将一个类的接口转换成客户希望的另一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 说起适配器模式 ...

  4. python适配器模式角色_Python设计模式之适配器模式原理与用法详解

    本文实例讲述了Python设计模式之适配器模式原理与用法.分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配 ...

  5. 【设计模式】—— 适配器模式Adapter

    模式意图 如果已经有了一种类,而需要调用的接口却并不能通过这个类实现.因此,把这个现有的类,经过适配,转换成支持接口的类. 换句话说,就是把一种现有的接口编程另一种可用的接口. 模式结构 [类的适配器 ...

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

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

  7. Java面试题:单例设计模式、适配器模式的不同方式

    QUESTION:单例设计模式.适配器模式的不同方式? ANSWER: 1.单例设计模式,适配器设计模式     单利设计模式:             在java中,单例模式是指为了保证类在内存中只 ...

  8. [学习笔记]设计模式[6]-{适配器模式外观模式}

    设计原则 最少知识原则:只和你的密友谈话 这个原则的意思是,在系统设计的过程中,不要让太多的类耦合在一起,免得对系统一部分的修改会影响到其他部分.在设计系统之前,应该首先注意对象与对象之间的交互关系, ...

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

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

  10. 设计模式回顾——适配器模式(C++)

    文章目录 1 前言 2 什么是适配器模式 2.1 生活中的适配器 2.2 适配器模式含义 2.3 适配器模式作用 3 适配器模式优缺点 3.1 适配器优缺点 3.2 类适配器优缺点 3.3 对象适配器 ...

最新文章

  1. Windows下MongoDB安装及创建用户名和密码
  2. 高仿真的类-AbstractApplicationContext
  3. 如何在Linux中使用history命令
  4. Attention模型
  5. linux代码windows能跑吗,能不能帮忙改一下下面这些代码,原来是在windows系统上运行的,要让它能在linux上终端跑。该如何处理...
  6. PE格式第四讲,数据目录表之导入表,以及IAT表
  7. 浅谈人工智能(AI)
  8. TIFF图像文件格式详解
  9. Windows聚焦问题修复
  10. matlab图片插值数据_Matlab中的插值函数
  11. Excel绘制排名变化曲线图(折线图),附源文件
  12. Reno与RACK对丢失/重传报文的标记
  13. zencart模板制作步骤详解
  14. Lightoj 1258
  15. 珠海:IT应用向政府投资行业集中
  16. 浅谈应试教育与信息时代
  17. 打开回收站提示“回收站已损坏是否清空该驱动器上的回收站“解决方法
  18. 自媒体时代网红电子商务
  19. 2022年吃瓜事件拆解,打造爆款,让你拥有顶级营销思维!
  20. 快速简洁的Vue+Electron项目搭建教程

热门文章

  1. SQLite,嵌入式数据库
  2. Unity实现安卓游戏自动下载更新、安装。
  3. Web前端之过渡与动画
  4. 易语言程序加密的原则
  5. discuz论坛 模板修改
  6. Java 对象深拷贝工具类
  7. 一个典型程序员的IT 7年
  8. 为什么荷兰买家更喜欢用iDEAL付款?
  9. 1000G素材资源大礼包,里面包含设计软件、设计师字体包,PS教程笔刷等。
  10. MATLAB 离散傅里叶变换(DFT)、逆离散傅里叶变换(IDFT)、快速傅里叶变换(FFT)的实现