首页 > 其他分享 >设计模式05----适配器模式

设计模式05----适配器模式

时间:2024-05-17 14:09:57浏览次数:30  
标签:USB 适配 适配器 模式 目标 ---- 接口 设计模式

适配器模式:
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口协同工作。这种模式涉及到一个单独的类,该类负责将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以一起工作。
例如:
USB转接口就是适配器,它能够将各种不同类型的接口(如HDMI、VGA、以太网等)转换为USB接口,这样无论是哪种类型的设备,只要连接到这个转接口,就可以通过统一的USB接口与计算机等其他设备通信。这里的USB接口就是目标接口,而HDMI、VGA等接口就是待适配的接口

适配器模式通常是由三个角色组成:
原接口 目标接口 适配器
适配器模式的角色:
目标(Target)接口:当前系统期望使用的接口,它定义了客户端需要使用的方法。
待适配的类(Adaptee):一个或多个现有的类,它们的接口与目标接口不兼容。
适配器(Adapter)类:一个中介类,它实现了目标接口,并通过私有方式包含一个待适配的类的实例,适配器类负责将目标接口调用转换为对待适配的类实例的调用。

适配器模式的分类:
类适配器模式:使用继承来实现适配器功能,适配器继承自待适配的类并实现目标接口。
对象适配器模式:使用组合来实现适配器功能,适配器内含待适配的类的实例,并实现目标接口。
适配器模式的实现步骤:
确定希望适配成的目标接口。
创建适配器类,实现目标接口。
在适配器类中添加一个私有变量,用于保存待适配的类的实例。
在适配器类中实现目标接口的方法,这些方法将调用待适配的类实例的对应方法。
客户端代码通过目标接口与适配器交互,无需知道待适配的类的具体实现。
适配器模式的优点:
透明性:客户端只需要与目标接口交互,无需关心适配器的内部实现。
灵活性:可以在不修改待适配的类的前提下,增加新的适配器,使得系统更具有扩展性。
重用性:可以重用现有的待适配的类,无需从头开始编写新的类。
适配器模式的缺点:
过多使用适配器可能会导致系统非常凌乱,特别是当多个适配器层叠时,可能会使得调试和跟踪问题变得复杂。
违反开闭原则:在类适配器模式中,由于使用了继承,当待适配的类需要改变时,适配器可能也需要改变。
适用场景:
当你想使用一个已经存在的类,但其接口不符合你的需求时。
当你需要创建一个可重用的类,该类可以与多个不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
适配器模式在软件设计中非常常见,特别是在需要整合旧有系统与新系统,或是第三方库与现有代码库时。通过使用适配器,可以在不修改现有代码的情况下,使这些系统或库能够一起工作。






标签:USB,适配,适配器,模式,目标,----,接口,设计模式
From: https://www.cnblogs.com/yaoweijun/p/18197691

相关文章

  • SimpleUI的使用
    ​ 很多人对Django自带的管理后台admin是又爱又恨,优点是几行代码配置就可以撸出一个功能性强的管理后台,缺点就是不怎么美观,感觉拿不出手。在所有的Django后台美化插件中,SimpleUI处于第一阵营,非常符合国人的审美观。本文将手把手教你如何配置使用SimpleUI。安装,注册app​ 第一......
  • Spring Boot的常用注解
    在SpringBoot中,注解(Annotation)是核心特性之一,广泛用于配置和简化开发。以下是SpringBoot中一些常用的注解及其示例:1.@SpringBootApplication@SpringBootApplication是一个组合注解,包括了@Configuration、@EnableAutoConfiguration和@ComponentScan。它通常用在主类上,标识一个......
  • 「杂题乱刷」AT_abc211_e
    题目链接[ABC211E]RedPolyomino(luogu)[ABC211E]RedPolyomino(at)解题思路从第三个样例可以看出总的方案数一定很少,因此我们可以直接确定第一个被染色的格子后直接向外爆搜,搜到最后可以使用哈希判重,但光凭这样的话\(2\)秒钟肯定跑不过去,因此我们可以在搜索的过程中使用......
  • FT-FMEA融合混沌演练,零售运营系统韧性架构在线验证实践
    本文分享自华为云社区《FT-FMEA融合混沌演练,零售运营系统韧性架构在线验证实践》,作者:《华为云确定性运维案例集(第2期)》聂刚。一、业务背景某零售企业营业范围覆盖20+个省份、数百个城市,为千家万户的生活提供服务,深受大众青睐。近年来,面对新零售和业务规模的不断扩大,该企业致力于......
  • kafka权威指南
    消息有字节数组组成消息Key也是一个字节数组根据消息key的哈希码进行取模后写入不同分区,保证具有相同key的消息总是被写入到相同分区中为了提供消息写入效率,支持消息的分批次写入,批次就是一组消息,每个批次的消息输入同一个主体和分区为了减少网络消耗,批次数据会被压缩kakfa使......
  • DashVector + ModelScope 玩转多模态检索
    本教程演示如何使用向量检索服务(DashVector),结合ModelScope上的中文CLIP多模态检索模型,构建实时的“文本搜图片”的多模态检索能力。作为示例,我们采用多模态牧歌数据集作为图片语料库,用户通过输入文本来跨模态检索最相似的图片。整体流程主要分为两个阶段:图片数据Embedding入库......
  • element-plus table部分列根据接口返回key展示
    实现效果根据刷选年份返回对应年份作为部分列1.处理接口数据接口返回数据格式需要处理成 处理过程data.message&&data.message.forEach((item:any)=>{letobj={}for(varkeyinitem){if(Number(key)){......
  • 计算机体系结构-Booth乘法
    原理解释电路实现以Radix-4Booth编码为例,Booth乘法的核心是部分积的生成,需要生成\(N/2\)个部分积,每个部分积与\([X]_补\)有关,存在\(-X,-2X,+X,+2X,0\)这五种可能,其中减去\(X_{补}\)的操作可以认为是按位取反的\(X_{补}\)在末尾+1。为了硬件实现方便,可以将末位1操作提取出来,假......
  • 使用 JS 实现在浏览器控制台打印图片 console.image()
    在前端开发过程中,调试的时候,我门会使用console.log等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。虽然我们可以把图片数据通过img标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个console.image......
  • 记一次k8s etcd报错Unhealthy
    使用命令某个节点ectd不健康#kubectlgetcsNAMESTATUSMESSAGEERRORcontroller-managerHealthy......