如果大家把自己的笔记本带到印度,英国去用,这时候你就需要一个Adapter,因为中国的电压是220V,而他们的不是.或者大家也许用过把一个窜口的鼠标加一个Adapter而接到USB接口上.在软件开发中也有这样的场景,常常需要把一些现存的对象放到新的应用环境中,但是新的应用系统要求的接口却和这些现存的对象不一致,这时候就需要一个Adapter,将现存的对象转换成新的应用系统希望的接口.

Adapter的宗旨就是:不改变原有实现的基础上,将原先不兼容的接口改成兼容的接口.

一般用两种策略来实现,1)把需要转换的对象包含进来,2)继承需要转换的类,同时实现转换后的接口.

1)对象Adapter模式,它依赖于一个对象(适配器)包含另一个对象(被适配的对象).

Adaptee已经有了提供稳定电流功能,但是是240V的,Adapter把Adaptee提供的电流降压,重用比直接再产生电
流要强多了,是不是?

2)类Adapter模式,它是通过多重继承来实现的(java中没有多继承,是通过接口来实现的).

Adaptee已经有了提供稳定电流功能,但是是240V的,Adapter把Adaptee提供的电流降压,通过继承的方法可以访问到supply240vElectricity,然后降压.

在上面两种方法中,更推荐使用对象Adapter:

1)OO模式中更提倡组合而非继承,耦合度更低.

2)Adapter在这里主要是提供PowerSupplier接口的方法,而不关心Adaptee的其它方法,如果用继承,就继承了Adaptee的全部方法.

3)Adapter可能会用到多个Adaptee提供的方法.

Adapter 模式相关推荐

  1. 结构型模式之Adapter模式

    1.意图 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 2.适用性 以下情况使用Adapter模式 (1)你想使用一个已经存 ...

  2. 设计模式-Adapter模式

    目录 相关概念 对象适配器 类适配器 一个例子 总结 适配器模式(Adapter Pattern)是结构型模式.主要用来解决接口不兼容的问题,将一个类的接口变换成客户端所期待的另一种接口,从而使原本因 ...

  3. 打造炫酷通用的ViewPager指示器 Adapter模式适配所有 1

    ###1.概述 上一期我们已经写了一篇 打造炫酷通用的ViewPager指示器 - 玩转字体变色 可是这种效果虽然绚烂可以装装A和C之间,但是在实际的大多数效果中并不常见,只是在内涵段子中有这个效果而 ...

  4. 设计模式--适配器(Adapter)模式

    模式定义 将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 类图 应用场景 1.当你希望使用某些现有类,但其接口与你的其他代码不兼容时: 2 ...

  5. 也说说“从Adapter模式到Decorator模式”

    为什么80%的码农都做不了架构师?>>>    终于有时间写点什么了,可以前酝酿好的东西似乎一下子都忘记了.这几天看了wayfarer的<<让僵冷的翅膀飞起来>系列 ...

  6. java设计模式adapter_Java设计模式--适配器(Adapter)模式

    适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极.阴极 ...

  7. 用Adapter模式重构以前系统的登录权限验证

    Adapter模式概述 Adapter模式有两种形式,一种是类的形式,一种则是对象的形式.目标就是用Adapter将原本不兼容的几个接口可以一起工作,简单的说,就是将引用的东西转变成我们自己系统需要的 ...

  8. VirtualBox linux 网络设置 Bridged Adapter模式

    virtualbox下linux 请检查有没有设置开机启动网络,默认是没有开启的.#vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes #这 ...

  9. 设计模式学习笔记——适配器(Adapter)模式

    设计模式学习笔记--适配器(Adapter)模式 @(设计模式)[设计模式, 适配器模式, adapter, 适配器] 设计模式学习笔记适配器Adapter模式 基本介绍 适配器案例 类适配器模式 类 ...

  10. 小例子背后的大道理——Adapter模式详解

    上回问题回顾 前文说到一位用户拿着业界标准开关(一个标准的StandardSwitcher,它依赖IStandardSwitchable接口才能工作,然而目前我们的灯并不支持这个接口)出现在我面前,叫 ...

最新文章

  1. 如何用R和API免费获取Web数据?
  2. Sparsity稀疏编码(一)
  3. 如何接地气地接入微前端?
  4. mysql 字符类型
  5. Django系列:(1)PyCharm下创建并运行我们的第一个Django工程
  6. 我们为什么要学习3D建模?
  7. LayaAir 事件处理器 Handler
  8. 彻底删除浏览器毒霸首页
  9. IMAP 协议/命令
  10. 数据挖掘(2.4)--数据归约和变换
  11. 学计算机用酷一点的话怎么说,酷到让你窒息的句子说说简短一句话 很酷很拽的社会人专属说说...
  12. 【B2B2C多用户】WSTMart商城系统 V2.0.6更新版发布
  13. Linux: 关于 SIGCHLD 的更多细节
  14. ClickHouse Kafka引擎表 Application maximum poll interval ... leaving group
  15. 【华为云技术分享】物联网常用开发板
  16. about oracle
  17. 8g内存学习计算机专业够吗,电脑8g内存够用吗 内存多大才够
  18. Java项目论文+PPT+源码等]基于javaweb的网上订餐管理系统|点餐餐饮餐厅
  19. 彻底删除软件,删除注册列表信息
  20. 基于python的投票系统论文_在线投票系统 毕业论文设计

热门文章

  1. php 跨域提交,php实现跨域提交form表单的方法
  2. vscode中文乱码问题及几种常见的解决方案
  3. 数据结构-第二章(1)-线性结构
  4. matlab结构地震,结构地震反应解析递推格式的Matlab实现
  5. 安装了汉化包,svn却没有汉化
  6. RS485通讯接口定义图详解
  7. 关于AVOD, 你需要知道的事
  8. 单片机c语言 课后答案,十天学会单片机C语言_郭天祥---课后习题答案
  9. WinFlash AwdFlash分析
  10. pythonlocust使用技巧_python locust 性能测试:HOOKS钩子方法