津津乐道设计模式 - 适配器模式详解(家里电器电源标准不统一的问题都解决了)

news/2024/10/18 2:39:28/

在这里插入图片描述

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

津津乐道设计模式 - 适配器模式详解

  • 什么是适配器模式
  • 适配器模式的应用场景
  • 生活案例
  • 代码案例
  • 适配器模式优缺点
  • 结语

什么是适配器模式

适配器模式(Adapter Pattern)是一种结构设计模式,用于将一个类的接口转换成用户所期望的另一个接口。它允许原本接口不兼容的类能够一起工作,提供了类与类之间的适配器,以便使它们能够协同工作。

意图
在这里插入图片描述
类图
在这里插入图片描述

适配器模式的应用场景

  • 接口不兼容:当现有类的接口与所需接口不兼容时,可以使用适配器模式来转换接口,使其能够协同工作。
  • 类的重用:如果你希望重用一些已经存在的类,但是它们的接口与你所需的接口不匹配,适配器模式可以帮助你将这些类集成到你的系统中。
  • 封装第三方库:当你使用一个第三方库或组件,但是它的接口与你的代码不兼容时,可以使用适配器模式将其封装起来,以便与你的代码进行交互。
  • 解耦性:适配器模式可以将客户端代码与具体类解耦,提高代码的灵活性和可维护性。

适配器模式适用于在不同接口之间进行适配的场景。它可以帮助我们解决接口不兼容的问题,实现系统的平滑过渡和集成,提高系统的灵活性和可维护性。

在我们日常生活中也经常能看到类似🉐️场景,比如电源插座转换头、手机充电转换头、显示器转换头等

生活案例

今天你的老婆海淘了一个美国生产的吹风机,然而你的老婆并不知道中国的电源标准是220V,而美国的电源标准是110V。这意味着这个美国生产的电吹风机在中国无法直接插入插座并工作。

在这种情况下,你可以使用适配器模式来解决问题。你可以购买一个电源适配器,它可以将中国的220V电源转换为适合美国电器的110V电源,从而解决你老婆的烦恼。

适配器模式将不兼容的接口转换为可兼容的接口。在这个场景中,电源适配器充当了一个适配器,将中国的插座(220V)适配为美国电器所需的插座(110V)。通过使用适配器,你完美解决了电源不兼容的问题,你老婆对你猛猛一顿夸 👏👏

代码案例

上面电源适配器案例中,我们可以创建一个适配器类,它实现了目标接口,并在内部持有一个适配者对象。适配器类将适配者的方法调用转换为符合目标接口的方法调用

首先,创建一个目标接口

/*** 目标接口*/
public interface PowerSocket {void supplyPower();
}

构建电源适配者

/*** 构建国内电源适配者*/
public class ChinesePowerSocket {public void supplyPower220V() {System.out.println("使用中国插座供电,输出220V电压");}
}

创建电源适配器类

/*** 电源适配器类*/
public class PowerAdapter implements PowerSocket{private ChinesePowerSocket powerSocket;public PowerAdapter(ChinesePowerSocket powerSocket) {this.powerSocket = powerSocket;}@Overridepublic void supplyPower() {System.out.println("通过适配器将电压转换为110V");powerSocket.supplyPower220V();}
}

最后测试代码

public class AdapterPatternTest {public static void main(String[] args) {ChinesePowerSocket chinesePowerSocket = new ChinesePowerSocket();PowerAdapter powerAdapter = new PowerAdapter(chinesePowerSocket);powerAdapter.supplyPower();}
}

最后输出效果如下:
在这里插入图片描述

适配器模式优缺点

适配器模式具有以下优点:

  • 适配器模式可以将不兼容的接口转换为可兼容的接口,使得原本无法协同工作的类能够一起工作,提高了代码的复用性和灵活性。
  • 适配器模式可以将适配器作为一个中间层,将客户端代码与具体类解耦,降低了类之间的耦合度,使得系统更加灵活和可维护。
  • 适配器模式可以通过增加新的适配器类来适配新的目标接口,而无需修改现有代码,符合开闭原则,对系统的扩展性和维护性有益。

适配器模式也有一些缺点:

  • 引入适配器会增加代码的复杂性,特别是当涉及多个适配器或复杂的适配逻辑时。过度使用适配器模式可能导致代码难以理解和维护。
  • 适配器模式引入了额外的间接层,可能会导致一定的性能损失。在性能敏感的场景中,需要权衡适配器带来的便利性和性能开销。

结语

本章主要介绍了什么是适配器模式,适配器模式的应用场景,并以一个实实在在的生活案例,演示了适配器模式的使用,方便大家加深印象~ 最后也总结了适配器模式优缺点,如果本文对你有用,欢迎关注收藏评论,大家一起探讨~


http://www.ppmy.cn/news/572518.html

相关文章

Golang 中的 bufio 包详解(五):常用函数

Golang 中的 bufio 包是带缓冲 I/O 操作的标准库,之前的几篇文章详细讲解了 bufio.Reader、bufio.Writer 和 bufio.Scanner 这个几个结构体的使用方法、特性和使用场景,本文介绍一下 bufio 包中的函数。 介绍常用函数之前,先简单介绍下另一个…

希腊字母英文对照表

希腊字母对应英文αAlphaβBetaγGammaδDeltaεEpsilonζZetaνNuξXiοOmicronπPiρRhoσSigmaηEtaθThetaιIotaκKappaλLambadaμMuτTauυUpsilonφPhiχChiψPsiωOmega

古希腊神话故事:雅典娜的神像

雅典娜的神像当伊拉斯最初建造特洛伊城时,他祈求 宙斯赐福于这座城市。宙斯听到祈求后,一尊木制的智慧雅典娜像从天堂落到了 城墙里。人们将它称作雅典娜神像。这尊木像担任着保卫和看守城市的任务。在 祭神的宗教仪式中,它在欢快的气氛和赞美…

鼎捷雅典娜诞生的背后:在不确定性中寻找到确定性

毫无疑问,过去几年随着数字化转型逐渐深入千行百业,越来越多的行业也正从“浅层次”数字化走向“深层次”数字化,因此未来如何进一步深化数智化转型,实现企业业务和商业模式的创新不仅是“大势所趋”,更是未来企业增长…

雅典娜暴利烹饪系列(下)

"呀--呀--呀--"爬到冰箱上的纱织吓的花容失色,"快点把那些土鳖拿开啦----" 端着一盆螃蟹的迪马斯头上好几个"加号":"你叫个什么劲呀!!!不是你要学煮螃蟹,叫我下河给你捞…

雅典娜暴利烹饪系列(上)

刨冰事件 田中大人曾经问过:和平是无聊的的代名词吗?答:不是。 今天的圣域在纱织的领导下,依然过着比战时更加热闹的日子。  早晨出门时,修罗觉得自己是这个世界上最为幸福的人。为了庆祝他拿到特级厨师证书&#xf…

深度解读鼎捷雅典娜三重创新价值

“对中国企业而言,在数智化新时代,重新审视在不确定性环境下的应变能力,加速推动数字化转型和智慧企业的落地建设,已经不再是一道选择题,而是必须给出的答案。”专业科技类媒体“申耀的科技观察”如是说。时势造英雄。…

2335:拯救雅典娜

2335:拯救雅典娜 时间限制:1 秒 内存限制:32 兆 题目描述 悲剧的雅典娜又被坏蛋抓走了!于是乎,正在马尔代夫度假的青铜五小强又要加班了-_-! 这次雅典娜被抓到了一个迷宫中,这个迷宫是方形的,且只有一层&am…