设计模式--适配器模式

devtools/2024/9/24 20:25:34/

适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。适配器模式主要用于解决接口不匹配的问题,让原本由于接口不兼容而不能一起工作的类可以一起工作。

下面,我将通过一个简单的例子来展示适配器模式的应用。假设我们有一个老式的电源插座(两孔插座),但我们想使用一个需要三孔插座的电器设备。为了解决这个问题,我们可以使用一个电源适配器来转换插座类型。

定义接口
首先,我们定义两个接口,分别代表两孔插座和三孔插座:

// 两孔插座接口  
public interface TwoPinSocket {  void powerSupply();  
}  // 三孔插座接口  
public interface ThreePinSocket {  void powerSupply();  
}

实现接口
然后,我们实现这两个接口。假设我们有一个真实存在的两孔插座实现,但没有直接的三孔插座实现(因为我们要模拟的是通过适配器来适配的情况):

// 两孔插座实现  
public class RealTwoPinSocket implements TwoPinSocket {  @Override  public void powerSupply() {  System.out.println("Providing power through two pins.");  }  
}  

// 假设没有直接的三孔插座实现,我们通过适配器来适配
适配器类
接下来,我们创建一个适配器类,这个类将两孔插座适配为三孔插座:

public class Adapter extends RealTwoPinSocket implements ThreePinSocket {  // 注意:这里我们继承自RealTwoPinSocket,但实现ThreePinSocket接口  // 适配器内部使用两孔插座的供电能力  @Override  public void powerSupply() {  // 调用两孔插座的供电方法  super.powerSupply();  // 可以在这里添加额外的逻辑来模拟三孔插座特有的功能,如果有的话  System.out.println("Adapting power for three pins.");  }  
}

客户端代码
最后,我们编写客户端代码来演示如何使用这个适配器:

public class Client {  public static void main(String[] args) {  // 创建一个两孔插座的实例  TwoPinSocket twoPinSocket = new RealTwoPinSocket();  // 但我们需要一个三孔插座,所以我们使用适配器  ThreePinSocket threePinSocket = new Adapter();  // 使用三孔插座供电  threePinSocket.powerSupply();  // 输出:  // Providing power through two pins.  // Adapting power for three pins.  }  
}

在这个例子中,Adapter 类将 RealTwoPinSocket 的功能适配成了 ThreePinSocket 接口所要求的形式,使得原本只能接受三孔插座的电器设备可以通过这个适配器使用两孔插座进行供电。这就是适配器模式的基本思想。


http://www.ppmy.cn/devtools/102505.html

相关文章

《数据结构(C语言版)第二版》第七章-查找(7.2-7.3.1)

7.2 线性表的查找&#xff08;适用于静态查找表&#xff09; 7.2.1 顺序查找 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100typedef int KeyType; typedef char InfoType;//数据元素类型定义 typedef struct {KeyType Key;InfoType otherinfo; }El…

MMsegmentation与MMdeploy简单使用

最近涉及到了图像分割的任务&#xff0c;于是拿来写下博客加深下使用。 MMsegmentation与MMdeploy的环境配置暂不做讲解&#xff0c;在官网和其他博客中有很多说明。 MMdeploy主要是把pt转为 onnx_int8的情况。 MMsegmentation环境配置可以参考 : 安装与配置MMSegmentation 目录…

访问者模式深入解析:轻松添加新操作,无需修改对象结构!

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不修改已有代码结构的情况下&#xff0c;为对象结构中的元素添加新的操作。 访问者模式通过将操作定义在一个访问者类中&#xff0c;该类带有一系列访问方法&#xff0c;用于对对…

FFmpeg的入门实践系列四(AVS)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力 文章目录 前期博客参考书籍一、AVS简介二、基于FFmpeg配置AVS2 前期博客 FFmpeg的入门实践系列一(环境搭建) FFmpeg的入门实践系列…

【Java】Java 设计模式之工厂模式与策略模式

Java设计模式是软件工程中一系列被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结&#xff0c;它们代表了最佳的实践&#xff0c;帮助开发者解决在软件设计过程中遇到的各种问题。这些模式可以根据其用途分为三大类&#xff1a;创建型、结构型和行为型&#xff0…

贪心算法---分发糖果

题目&#xff1a; n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计…

PHP多门店民宿酒店预订系统小程序源码

&#x1f3e8;✨「多门店酒店民宿预订系统」——一键解锁全球住宿新体验&#xff01;&#x1f30d;&#x1f3e0; &#x1f31f; 开篇种草&#xff1a;旅行新伙伴&#xff0c;预订无忧&#xff01; 嘿小伙伴们&#xff0c;是不是每次计划旅行都被繁琐的酒店民宿预订搞得头大&…

bomb 实验

GDB常用命令&#xff1a; GDB调试常用命令-CSDN博客 原理&#xff1a; 编译与反汇编过程-CSDN博客 Bomb实验实现 阶段一&#xff1a; 分析 分配空间&#xff1a;sub $0x8,%rsp 为局部变量分配栈空间。设置参数&#xff1a;mov $0x402400,%esi 将字符串地址加载到 %esi。…