1 概述

  适配器模式(Adapter):就是把一个类的接口变换成客户端所期待的另一种接口。

  适配器模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,最多只要修改几个Adapter类就可以了,其他源代码都不会受到影响。

适配器模式有两种形式,一种是类的适配,另一种自然就是对象的适配。

1.1 类的适配

这种适配方式,由以下几个角色组成:

(1)目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。

(2)源(Adapee)角色:现在需要适配的接口。

(3)适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。

举例:

电脑(目标对象)需要输入文字,但是现在发现,电脑的接口和键盘(被适配的对象)的接口不一样,这时候就需要适配器。

package com.ljl.adapter;
//客户端(相当于笔记本)
public class Client01 {//笔记本向键盘发送打字请求public void test(Target t) {t.handRequset();}public static void main(String[] args) {Client01 c = new Client01();Adaptee a = new Adaptee();Target t = new Adapter();Target tt = new Adapter2(a);c.test(t);c.test(tt);}}

接口,用于处理目标对象的请求

package com.ljl.adapter;public interface Target {void handRequset();
}

被适配的对象

package com.ljl.adapter;
//被适配的类(相当于键盘)
public class Adaptee {void requset() {System.out.println("可以打字");}}

类适配器

package com.ljl.adapter;
//类适配器
//连接Target,Adaptee
public class Adapter extends Adaptee implements Target{@Overridepublic void handRequset() {// TODO Auto-generated method stubsuper.requset();}}

1.2 对象的适配

  对象的适配依赖于对象的组合,而不是类适配中的继承。

对象适配器

package com.ljl.adapter;
//使用组合实现适配器
//经典场景:字节流转为字符流
public class Adapter2  implements Target{private Adaptee adaptee;public Adapter2(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void handRequset() {// TODO Auto-generated method stubadaptee.requset();}}

(1)类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。

(2)对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个包装类,持有原类的一个实例,在包装类的方法中,调用实例的方法就行。

参考:

https://www.cnblogs.com/Scott007/p/3439576.html

转载于:https://my.oschina.net/u/4094176/blog/3027241

大话设计模式---设配器模式相关推荐

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

    设配器模式 现实生活中的适配器例子: 泰国插座用的是两孔(欧标),可以买个多功能转换插头(适配器),这样就可以使用了. 基本介绍 设配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要的目的是 ...

  2. java设计模式-设配器模式

    1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用场景: 1.已经存在 ...

  3. 设计模式:设配器模式

    设配器模式 1.泰国旅游使用插座问题 现实生活中的适配器例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了. 2.适配器模式基本介绍 适配器模式(Adapter ...

  4. 设计模式之设配器模式、外观模式

    设计模式之--设配器模式 适配器模式定义 适配器模式是将一个类的接口转化为另一种期待的接口,适配器让原本接口不兼容的类可以相互合作.适配器模式使用对象组合,以修改的接口包装被适配者,这样做的优点是被适 ...

  5. 设配器模式不止是补救,有时更像是一个创造者

    设配器模式不止是补救,有时更像是一个创造者 适配器模式的官方应用场景是在软件开发后期,应对功能扩展后,新的类结构无法对应之前的接口,从而采用的一种补救措施.然而如果你只记住了这个,你可能会错过一个很重 ...

  6. 大话设计模式(二)代理模式

    大话设计模式(二)代理模式 前言 代理模式(Proxy Pattern)是GoF 23种Java常用设计模式之一.代理模式的定义:Provide a surrogate or placeholder ...

  7. 大话设计模式—责任链模式

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...

  8. 大话设计模式—中介者模式

    中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. ...

  9. 设计模式6--适配器模式

    前言 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能.这种模式涉及到一个单一的类,该类负责加入独立的或不兼容 ...

最新文章

  1. HTML fieldset 标签 -- 表单分组
  2. 在Flutter中嵌入Native组件的正确姿势
  3. 【Scrapy】OAuth 学习笔记
  4. 将 Mac OS X 上的目录挂载到 Linux 的方法
  5. 82.开始→运行→输入的命令集锦
  6. ubuntu+eclipse+svn
  7. Qt利用avilib实现录屏功能_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...
  8. php字符串替换多余逗号_PHP字符过滤函数去除字符串最后一个逗号(rtrim)_php技巧...
  9. android log4j日志管理的使用
  10. 求样本方差,标准差,matlab
  11. 微博有哪些营销价值?
  12. 潇洒老师分享的小知识:注塑模具“压模”的原因和预防措施
  13. linux fedora 24 使用 ibus 智能拼音 输入 补全 英文
  14. 图神经网络学习过程心得总结
  15. Reno5、Reno5 Pro和Reno5 Pro+ 的区别
  16. 修改hosts不必重启 立刻生效
  17. java为文本框添加背景颜色,文本框添加背景图片,文本框背景图片,文本框添加水印[Java...
  18. Dotaer vs Loler
  19. 知识付费直播间即时通讯
  20. 安卓加固方案从落地加载到类指令抽取编写报告

热门文章

  1. 32位架构应用转64位架构小结
  2. 图解3G接入网传输方式(转)
  3. Microsoft Management Console 遇到问题需要关闭
  4. TagSupport和BodyTagSupport的区别
  5. [网络浏览]GreenBrowser下载地址
  6. 一滴泪水能够承载多少的爱?
  7. 3.Python教程--项目框架篇(全)
  8. 窗体控件随窗体大小改变(包括字体大小)
  9. EfficientDet训练数据集anchor设定教程101
  10. 数据结构学习系列 -- 漫画B B+树