【适配器模式】—— 每天一点小知识

news2024/11/26 20:59:30

在这里插入图片描述

                                                                              💧 适配器模式 \color{#FF1493}{适配器模式} 适配器模式💧          


🌷 仰望天空,妳我亦是行人.✨
🦄 个人主页——微风撞见云的博客🎐
🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
💧 《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~ 💐
🥣 《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~ 🌊
🪁 希望本文能够给读者带来一定的帮助~🌸文章粗浅,敬请批评指正!🐥


文章目录

  • 🐳设计模式之适配器模式
    • 引言
    • 适配器模式的概念和思想
    • 应用场景
    • 类适配器
    • 对象适配器
    • 使用适配器
    • 总结
  • 🐳结语


🐳设计模式之适配器模式

引言

设计模式是软件开发中重要的概念之一。适配器模式是设计模式中的一种,它用于将一个类的接口转换成客户端期望的另一个接口。在本文中,我们将深入探讨适配器模式的概念和思想,并介绍适配器模式的应用场景以及常见的代码实现方式。

适配器模式的概念和思想

  💧适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户端期望的另一个接口来实现不兼容接口之间的协作。

  💧适配器模式的核心思想是创建一个适配器类,该适配器类实现客户端期望的接口,并持有一个需要适配的对象实例。适配器类将客户端的请求转发给被适配对象,从而实现对原有接口的适配。


介绍适配器模式的应用场景以及常见的代码实现方式 ↓

应用场景

  💧适配器模式通常在以下场景中使用:

  • 将一个已经存在的类集成到另一个接口中。
  • 在系统中引入一个第三方库或组件,但其接口与系统要求的接口不兼容。
  • 对现有的类库进行功能扩展或修改,但又不希望对原有代码进行修改。

类适配器

  💧类适配器是一种常见的适配器模式实现方式。在该实现中,适配器类继承自被适配类,并实现客户端期望的接口。

public interface Target {
    void request();
}

public class Adaptee {
    public void specificRequest() {
        // 原有接口的实现逻辑
    }
}

public class Adapter extends Adaptee implements Target {
    public void request() {
        specificRequest();
        // 其他适配逻辑
    }
}

在上述代码中,我们定义了一个目标接口 Target 和一个被适配类 Adaptee。适配器类 Adapter 继承自 Adaptee 类,并实现了 Target 接口。适配器类中的 request() 方法将客户端的请求转发给了被适配类的 specificRequest() 方法。

对象适配器

  💧对象适配器是另一种常见的适配器模式实现方式。在该实现中,适配器类持有一个被适配对象的实例,并实现客户端期望的接口。

public interface Target {
    void request();
}

public class Adaptee {
    public void specificRequest() {
        // 原有接口的实现逻辑
    }
}

public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    public void request() {
        adaptee.specificRequest();
        // 其他适配逻辑
    }
}

在上述代码中,我们定义了一个目标接口 Target 和一个被适配类 Adaptee。适配器类 Adapter 持有一个 Adaptee 类的实例,并实现了 Target 接口。适配器类中的 request() 方法将客户端的请求转发给了被适配类的 specificRequest() 方法。

使用适配器

  💧以下是适配器模式的使用示例:

public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target adapter = new Adapter(adaptee);
        
        adapter.request();
    }
}

在上述代码中,我们创建了一个被适配对象 Adaptee 和一个适配器对象 Adapter。通过将被适配对象传递给适配器的构造函数,我们将被适配对象转换成客户端期望的接口。最后,通过适配器的 request() 方法,客户端可以调用被适配对象的功能。

总结

    适配器模式是一种有用的设计模式,可以在不改变现有接口的情况下实现不兼容接口之间的协作。通过适配器模式,我们可以将已有的类集成到新的接口中,引入第三方库或组件,并对现有的类库进行功能扩展或修改。


在这里插入图片描述


🐳结语

🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

🐟积少成多,滴水成河。文章粗浅,希望对大家有帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka学习笔记(基础篇)

目录 Kafka简介 消息队列 Kafka的应用场景 消息队列的两种模型 Kafka集群搭建 Kafka的生产者/消费者/工具 Kafka的基准测试工具 Kafka Java API开发 生产者程序开发 消费者程序开发 生产者使用异步方式生产消息 Kafka中的重要概念 消费者组 幂等性 事务编程 Ka…

英文单词的3σ值

最近做log的nlp,发现日志当中有一些很长的但是无意义的词汇,很影响训练模型,这边想通过单次长度去排除那些无意义词汇,去查了gpt英文单次的3σ值,记录下

谷歌浏览器中的谷歌翻译失效了?如何解决谷歌翻译不响应问题?

1 原因分析 因为谷歌把国内的服务器关了。 2 下载软件 (1)Mac OS https://github.com/Ponderfly/GoogleTranslateIpCheck/releases/download/1.6/GoogleTranslateIpCheck-mac-x64.zip(2)Windows https://github.com/Ponderfl…

【MySQL体系结构及CetOS7安装MySQL和修改密码】

MySQL体系结构及安装MySQL MySQL体系结构CentOS7安装MySQL四种方法1、离线安装2、在线安装3、通用二级制方式4、容器方式安装 设置及修改密码忘记密码恢复 MySQL体系结构 MySQL是一种常用的关系型数据库管理系统(RDBMS),其体系结构包括以下&…

ARM架构(ARM汇编指令练习)

文章目录 前言一、MOV指令二、内存访问指令1.LDR指令2.STR指令 三、数据处理指令1.ADD指令2.SUB指令3.位操作指令4.CMP指令 四、跳转指令总结 前言 本篇文章带大家来学习ARM汇编的一些常用的指令,这里指令都是非常基础的指令。 一、MOV指令 MOV(Move&…

一个 Kill 不掉的 MySQL 会话

究竟是什么原因,导致主从切换过程中存在一个无法 kill 的会话? 作者:秦广飞 爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查,对数据库有兴趣,对技术有想法。一入 IT 深似海,从此节…

【钱处理】商业计算怎样才能保证精度不丢失

以项目驱动学习,以实践检验真知 前言 很多系统都有「处理金额」的需求,比如电商系统、财务系统、收银系统,等等。只要和钱扯上关系,就不得不打起十二万分精神来对待,一分一毫都不能出错,否则对系统和用户来…

集群 第一章

目录 1.群集的含义 2.群集分类 3.群集架构 4.负载调度工作模式 5.lvs 虚拟服务器 6.nat 模式 lvs 负载均衡群集部署 7.总结 1.群集的含义 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址)&#…

建筑师们,你们该把三维模型弄到PPT里做汇报了!

➤如何实现项目汇报效率比传统的PPT高,同时汇报效果更直观? ➤如何摆脱方案汇报只能向客户交付数据,安装专业软件查看项目成果? ➤如何将无人机航测数据、CAD图纸、BIM设计成果进行融合,挖掘出更深层次的应用&#x…

mysql体系结构及安装部署mysql

目录 1.体系结构 2.安装mysql 1.yum 源安装 2. 第二种安装方式-通用二进制方式 3.mysql改密方式 第一种,知道密码的情况下 第二种,不知道密码 1.体系结构 MySQL server连接层连接池(缓冲池)SQL层系统管理和控制工具SQL…

亿级日活业务稳如磐石 华为云发布性能测试服务CodeArts PerfTest

HDC期间可参与华为云PaaS生态抽奖活动,活动链接在文末 计算机软件作为人类逻辑智慧的伟大结晶之一,已经渗透到了人类社会的各个角落。早期的计算机发展对硬件有很强的依赖性,只有少数的个人或者机构才能拥有软件这种“奢侈品”。但随着软件行…

了解和搭建zabbix 6.0(来日方长)

前言: 作为一个运维,需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等,利用监控系统的数据去了解网站上线发布的结果和健康状态。 利用一个优秀的监控软件,我们可以: 通过一个友好的界面进行浏览整个网站所有…

OpenAI呼吁超级智能需要被监管

ChatGPT的创建者OpenAI发出了对超级智能监管的发人深省的呼吁,并与核能的监管进行了类比。在最近的一篇博客文章中,OpenAI强调了人工智能快速发展可能产生的影响以及这个不断变化的领域治理的紧迫性。该公司表示,预计人工智能系统将在未来十年…

你一定要用这个API管理工具,看完你就知道为什么了

以下是经常发生在程序员之间的对话: 小张:你知道为什么程序员不喜欢写文档? 小王:因为代码就是最好的文档啊!谁还需要写那些冗长的说明呢? 小张:那你知道为什么程序员也不喜欢别人不写文档吗…

JAVA POI的excel中包含图片进行读取保存,单张图片,多张图片

JAVA POI的excel中包含图片进行读取保存,单张图片,多张图片 ---------------------------------------------效果---------------------------------------------------------- 1.单张图片 2.多张图片 import java.io.FileInputStream; import java.io.FileOutputStream;…

途乐证券|有色金属板块崛起涨超2%,云南锗业两连板

周三(7月5日),A股三大股指震荡整理。截至上午收盘,上证指数跌幅达0.51%,报3228.68点;深证成指和创业板指跌幅分别为0.53%和0.59%;沪深两市合计成交额5310.1.6亿元,总体来看,两市个股跌多涨少。 …

机器学习25:《数据准备和特征工程-III》采样和分隔

目录 1.采样和分割数据 1.1 抽样简介 1.2 过滤 PII(个人身份信息) 2.数据不平衡 2.1 下采样和增加权重 3.数据分割示例 3.1 随机分割可能不是最好的方法 4.分割数据 5.随机化 5.1 实际考虑 5.2 散列的注意事项 6.参考文献 1.采样和分割数据-…

2023,中国电商重回元老时代

中国的历史上不缺“太上皇”,但“太上皇”再度站到台前的很少。公元1457年,被囚禁在南宫的“太上皇”朱祁镇复位,上演了中国历史上少见的南宫复辟。而危机时刻被推举为皇帝的朱祁钰,后来的庙号是代宗,阴阳怪气十足。 …

php://input文件包含

实验目的 通过本实验,了解php封装伪协议,掌握php://input文件包含的用法 实验环境 操作机:kali 靶机:Windows 实验地址:http://靶机ip/exp/include2/input/input2/ 工具:burpsuite 用户名&#xff1a…

好用的屏幕录制工具--Bandicam(班迪录屏)

最近准备录个电脑的音频,找了好多个软件,除了收费就是功能有限,经过好一番折腾试用,发现了2个介面友好功能强大的录屏、录音软件: ① Bandicam(班迪录屏)(强烈推荐) ② 数据蛙录屏 Bandicam(班迪…