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

在这里插入图片描述

                                                                              💧 适配器模式 \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.hqwc.cn/news/13352.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【源码】vue2+element+laravel8开发不良事件上报系统源码

系统概述: 医院不良事件报告系统为医院内质量控制、患者安全关注、医疗安全不良事件方面的精细化的管理提供了平台,是等级医院评审的必备内容,评审要求医院直报系统要与卫生部“医疗安全(不良)事件报告系统”建立网络对接。 不良事件报告系统…

C语言 base32与base64加解密

概述 Base32、Base64编码就是分别用32个、64个可打印字符表示二进制数据。 一、Base32规则 32 2^5,所以需要5 Bit来表示一个base32字符。一个字节8 Bit,5和8的最小公倍数是40。编码的过程中,以5个字节为一组转为8个base32字符,不…

【Redisson】Redisson--分布式远程服务(Remote Service)

Redisson系列文章: 【Redisson】Redisson–基础入门【Redisson】Redisson–布隆(Bloom Filter)过滤器【Redisson】Redisson–分布式锁的使用(推荐使用)【分布式锁】Redisson分布式锁底层原理【Redisson】Redisson–限流器 文章目录 一、Redi…

目标检测+车道线识别+追踪+测距(代码+部署运行)

目标检测车道线识别追踪测距 本文主要讲述项目集成:从车道线识别、测距、到追踪,集各种流行模型于一体! 不讲原理,直接上干货! 把下文环境配置学会,受益终生! 各大项目皆适用! …

java项目之高校二手交易平台(ssm+jsp+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的高校二手交易平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&…

Linux VS Windows 孰优孰劣?

目录 1. 开源 vs. 闭源:2. 用户界面:3. 软件兼容性:4. 系统安全性:5. 社区支持和文档资源: Linux和Windows是两个主要的操作系统,它们在很多方面都有不同的特点和使用体验。以下是对Linux和Windows进行比较…

微信开发者工具模拟器中不显示鼠标问题

前言 在使用微信开发者工具开发微信小程序时,使用到了第二屏幕,在第一屏幕上,微信开发者工具模拟器中,可以正常显示鼠标,而在第二屏幕上不显示鼠标。 解决方案: 方案1:设置指针轨迹&#xff…

scratch 鼠标控制角色移动

scratch 鼠标控制角色 本程序使用鼠标操作“机器人”角色跟随鼠标,距离较小时暂停移动;“小狗”角色连续在随机位置生成、水平移动、碰到边缘反弹、碰到“机器人”角色时删除。 目前scratch程序的制作已经告一段落了,进一步开发需要更多规划…

Python学习笔记(十五)————文件操作相关

目录 1)文件编码 2) 文件的读取 ①open()打开函数 ② mode常用的三种基础访问模式 ③读操作相关方法 read()方法: readlines()方法: readline()方法:一次读取一行内容 for循环读取文件行 close() 关闭文件对象 wi…

MySQL单表查询练习题

目录 第一题 第二题 第三题 第一题 1.创建数据表pet,并对表进行插入、更新与删除操作,pet表结构如表8.3所示。 (1)首先创建数据表pet,使用不同的方法将表8.4中的记录插入到pet表中。 mysql> create table pet( name varchar(…

如何在Microsoft Excel中快速创建等比序列

Excel 中的填充句柄允许你通过拖动句柄自动填充行或列中的数据列表(数字或文本)。这可以在大型工作表中输入顺序数据时节省大量时间,并提高工作效率。 如果数据遵循某个模式或基于其他单元格中的数据,则可以使用“自动填充”功能…

尚无忧多城市共享自助台球室台球厅预约开灯开门小程序源码

1、定位功能:可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示,系统公告消息提醒 4、个性化功能展示,智能排序,距离、价格排序 5、现有店铺清单展示,订房可查看房间单价,根据日期、…