意图:

将一个类的接口转换为客户希望的另一种接口,从而使原来接口不匹配而无法在一起工作的两个类能够一起工作。

为什么使用呢?

这个模式是比较简单的,第一次看GOF的书时,就感觉比较好理解。不知道大家是否有同样理解,因为它的意图已

经很好的回答了 我们为什么要使用它。不知道大家有过这样的经历没有,我们有时遇到两个没有关系的类组合在一起

使用,由于接口不同,所以使用起来很不方便 ,怎么办?我们第一反应是修改接口,是的这是一种方法,但接口一般

都要有稳定性,我们不能为自己用的方便就乱修改,很可能你这里方便了,别人该倒霉了。所以 修改接口不是一个好

办法,大概是《重构》里面讲过,“计算机是一门这样的科学,什么事加一个中间层就好办多了!”意思大概是这样,原

话我记不清楚了。也许聪明的你已经猜到我该如何处理这个问题了,呵呵,是的,我们在这里也加一个中间层类,

让它继承原来两个不能在一起使用的类,或者只继承一个目标类,组合另一个类,来达到适配的目的。

总结:

1:类适配器模式违背职责单一原则(可能要受罚的哦)而对象适配器更符合面向对象的精神,“对象组合优先继承” 还

记的吗?

2:由于类适配器模式使用继承,因此 我们想要匹配一个类极其子类时,该模式将不能胜任。

3:类适配器模式中的Adapter角色可以重新定义adapter的行为,这不废话吗,它继承它当然可以重定义了。

4:对象 适配器模式可以与多个adaptee,即 它及它的子类同时工作。但重定义它的行为比较困难,如果真的需要,

那就需要重新生成adaptee的子类,并且使得Adapter引用这个子类。

5:本模式比较简单,基本思想就是适配器一定要符合目标接口。

类适配器模式所涉及到的角色如下:

目标(Target)角色:这是客户所期待的接口。
      源(Adaptee)角色:需要适配的类。

适配器(Adapter)角色:把源接口转换成目标接口。这一角色必须是类。

对象适配器模式所涉及到的角色如下:

目标(Target)角色:这是客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
      源(Adaptee)角色:需要适配的类。

适配器(Adapter)角色:在内部包装一个Adaptee对象,把源接口转换成目标接口。

转载于:https://www.cnblogs.com/wangok/archive/2008/12/17/1356606.html

为什么使用 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. android gravity和layout_gravity区别
  2. LVS DR模式部署
  3. 基于 Spring Boot 的 Restful 风格实现增删改查
  4. 重叠IO模型-异步IO
  5. shell的学习和命令使用入门
  6. android Activity runOnUiThread() 方法使用
  7. iOS App如何连接外设
  8. 计算机系统基础:设备管理采用的相关技术知识笔记
  9. python离群点检测方法分几类_数据分析 第五篇:离群点检测
  10. 你不可能没看过这10个设计师的文章
  11. 讲真,灾备的内涵其实很丰富
  12. 自定义ArcView-构造拓展性高的view
  13. 启动U盘更换背景图片和图标的方法
  14. 5G网络规划面临的挑战
  15. 推荐PC端一款非常好用的解压缩软件
  16. Aerospike SSD模式下写入swb内的记录格式
  17. javascript:void(0)的作用
  18. 7-20 出生年 (10 分)
  19. 调侃c语言的图片,c语言能显示图片吗
  20. C语言实现移位密码体制

热门文章

  1. Node.js 中 exports 和 module.exports 的区别
  2. Python基础之字典
  3. C#复习笔记(2)--C#1所搭建的核心基础
  4. Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
  5. Docker CPU 资源限制——CPU分片功能测试
  6. DBMS_ERRLOG记录DML错误日志(一)
  7. Silverlight.XNA(C#)跨平台3D游戏研发手记:(七)向Windows Phone移植之双向交互
  8. Install-Package Ninject -Project SportsStore.WebUI
  9. [转载]shell 十三问?
  10. 含有空格或者逗号的字符串反转最有效的办法——栈