前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >适配器Adapter[通俗易懂]

适配器Adapter[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-22 06:26:55
发布于 2022-09-22 06:26:55
55200
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

适配器Adapter

动机

在软件系统中,由于应用环境的变化,常常需要将”一些现存的对象”放在新的环境中应用.但是新的环境要求的接口是这些现存对象所不满足的.

如何应对这种”迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?

模式定义

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

实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//目标接口(新接口)
class ITarget{ 
   
public:
    virtual void process() = 0;
}

//遗留接口
class IAdaptee{ 
   
public:
    virtual void foo(int data) = 0;
    virtual int bar() = 0;
}
//遗留类
class OldClass : IAdaptee{ 
   
public:
public:
    void foo(int data){ 
   
        //..
    };
    int bar(){ 
   
        //..
    };
}
//对象适配器
class Adapter : public ITarget{ 
    //对象
protected:
    IAdaptee* pAdaptee; //组合
public:

    Adapter(IAdaptee *PAdaptee){ 
   
        this->pAdaptee = pAdaptee;
    }
    virtual void process(){ 
   
        int data = pAdaptee->bar();
        pAdatee->foo(data);
    }
}

//类适配器
class Adapter : public ITarget,protected OldClass//多继承,这样不好 因为类被写死了
{ 
   
}

int main(){ 
   
    IAdaptee* pAdaptee = new OldClass();

    ITarget *pTarget = new Adapter(pAdaptee);
    pTarget->process();
}

结构

要点总结

  • Adapter 模式主要是应用于”希望复用一些现存的类.但是接口与服用环境要求不一样的情况”,在遗留代码复用,类库迁移方面非常有用
  • GoF23定义了两种Adapter模式的实现接口:对象适配器和类适配器.但类适配器采用”多继承”的实现方式,一般不推荐使用,对象适配器采用”对象组合”的方式,更符合松耦合精神
  • Adapter模式可以实现的非常另外,不必拘泥于Gof23中定义的两种接口.例如,完全可以将Adapter模式中的”现存对象”作为新的接口方法参数,来达到适配器目的

笔记

  • 适配器得能适配 有内在实现层面的关联性 有内在功能的可复用性 ,可以把Adaptee转换为Itarget
  • stl中的queue内部使用的就是deque
  • Adapter就是把老接口转换成新接口
  • 很多时候设计模式不能和结构体一摸一样 要灵活使用
  • 不见得代码的设计和类图一一对应,设计模式对变换点 解决问题的手法 应用场景是否符合设计模式的定义 如果符合就是这个设计模式
  • 软件行业的FrameWork经常能看到有Adapter
  • 对象适配器就是组合对象
  • public继承是符合他的接口规范 protected和private继承是实现继承 用它的实现
  • 一般不使用类适配器 只使用 对象适配器

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168503.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Design Patterns 17 - 适配器模式
适配器模式, 将一个类的接口转换成客户希望的另一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
Reck Zhang
2021/08/11
2060
【设计模式自习室】适配器模式
该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我的个人公众号:后端技术漫谈,不会错过精彩好看的文章。
蛮三刀酱
2020/01/14
4140
【设计模式自习室】适配器模式
『设计模式』适配器模式(Adapter)
适配器模式把一一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。
风骨散人Chiam
2020/10/28
7480
通俗易懂设计模式解析——适配器模式
  前面完成了创建型的设计模式的分享,创建型的设计模式解决的是对象创建的问题。今天开始介绍结构型的设计模式,其中结构型设计模式包括:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。结构型设计模式解决的是类与对象的组合关系。今天讲结构型对象中的第一个——适配器模式。适配器模式——顾名思义嘛。在我们平常的理解中,适配器是干啥用的呢?不就是将两个原本不匹配的东西转换为匹配罢了。适配器是接口转换器,比如电源适配器,USB接口转换器等等。
小世界的野孩子
2019/09/11
4850
设计模式(五)适配器模式Adapter(结构型)
接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。
黄规速
2022/04/14
3690
设计模式(五)适配器模式Adapter(结构型)
【愚公系列】2023年11月 二十三种设计模式(六)-适配器模式(Adapter Pattern)
设计模式(Design Pattern)是软件开发领域的宝贵经验,是多人反复借鉴和广泛应用的代码设计指导。它们是一系列经过分类和归纳的代码组织方法,旨在实现可重用性、可维护性和可理解性。使用设计模式,我们能够编写高质量的代码,使其更易于他人理解,并提供了代码可靠性的保证。
愚公搬代码
2023/11/07
7270
适配器模式(Adapter Pattern)- 最易懂的设计模式解析
把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。
Carson.Ho
2019/02/22
2.9K0
适配器模式(Adapter)
适配器模式(Adapter) 适配器模式(Adapter)[Wrapper] 意图:将类的一个接口转换成用户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。 应用:将图形类接口
Florian
2018/02/05
5700
适配器模式(Adapter)
设计模式- 适配器模式 (Adapter Pattern)
适配器从结构上可以分为类适配器和对象适配器。其中类适配器使用继承关系来对类进行适配,而对象适配器是使用对象引用的方法来进行适配的。
易兒善
2019/05/10
5600
【愚公系列】2021年12月 二十三种设计模式(六)-适配器模式(Adapter Pattern)
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
愚公搬代码
2022/12/01
2340
【愚公系列】2021年12月 二十三种设计模式(六)-适配器模式(Adapter Pattern)
漫话:如何给女朋友解释什么是适配器模式?
周末窝在家里面打王者荣耀,女朋友在旁边玩我的电脑,我嫌她播放的综艺节目声音比较大,于是建议她戴耳机。
用户1564362
2019/09/02
9220
漫话:如何给女朋友解释什么是适配器模式?
适配器模式(Adapter)
假如你正在开发一款股票市场监测程序,它会从不同来源下载 XML 格式的股票数据,然后向用户呈现出美观的图表。
兜兜转转
2023/03/08
3020
适配器模式(Adapter)
适配器模式
适配器模式是一种结构型设计模式,通过将一个类的接口转换为客户期望的另一个接口,使得原本接口不兼容的类可以一起工作。适配器模式又称“包装器(Wrapper)”。
码事漫谈
2024/12/20
1200
适配器模式
精读《设计模式 - Adapter 适配器模式》
Adapter(适配器模式)属于结构型模式,别名 wrapper,结构性模式关注的是如何组合类与对象,以获得更大的结构,我们平常工作大部分时间都在与这种设计模式打交道。
黄子毅
2022/03/14
3650
精读《设计模式 - Adapter 适配器模式》
适配器模式与桥接模式:一分钟浅谈
在面向对象设计模式中,适配器模式和桥接模式都是非常重要的模式,它们帮助我们解决了一些常见的设计问题。本文将从概念、应用场景、实现方式以及常见问题等方面,对这两种模式进行简要介绍,并通过C#代码示例来加深理解。
Jimaks
2024/10/26
2160
适配器模式C++实现
适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作
里克贝斯
2021/05/21
4550
适配器模式C++实现
23设计模式之 ---------适配器模式
适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
默 语
2024/11/20
890
23设计模式之 ---------适配器模式
一看就懂的适配器设计模式
一般客户端通过目标类的接口访问它所提供的服务。有时,现有类可以满足客户端类的需要,但所提供接口不一定是客户端所期望的,可能因为现有类中方法名与目标类中定义的方法名不一致。
JavaEdge
2022/05/29
4200
一看就懂的适配器设计模式
设计模式——适配器模式
设计模式——适配器模式
Java架构师必看
2021/05/14
4600
设计模式——适配器模式
23种设计模式之适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。
Java技术债务
2022/08/09
2010
23种设计模式之适配器模式
推荐阅读
相关推荐
Design Patterns 17 - 适配器模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验