适配器模式

**适配器模式(Adapter Pattern)**是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够一起工作。

适配器模式主要有三个角色:

目标接口(Target):客户端期望的接口,客户端通过调用目标接口来使用特定功能。
源接口(Adaptee):需要被适配的现有接口,它是客户端无法直接使用的接口。
适配器(Adapter):实现目标接口,并包含一个源接口的引用,通过对源接口的适配转换,将客户端的请求委托给源接口处理。
适配器模式可以解决以下场景:

在使用第三方库或遗留代码时,其接口可能与当前系统的接口不兼容,使用适配器模式可以快速适配。
当希望在不修改现有代码的情况下复用某个类,但该类的接口不符合当前系统要求时,可以使用适配器模式来进行接口转换。
示例:
假设我们有一个音频播放器,可以播放MP3格式的音频文件。但现在有一个新的音频格式WAV,我们需要在不修改现有播放器代码的情况下,支持WAV格式的音频文件播放。我们可以使用适配器模式来实现:

// 目标接口:音频播放器
interface MediaPlayer {
    void play(String audioType, String fileName);
}

// 源接口:MP3播放器
class Mp3Player {
    public void playMp3(String fileName) {
        System.out.println("播放MP3音频:" + fileName);
    }
}

// 适配器类:适配MP3播放器到音频播放器接口
class Mp3Adapter implements MediaPlayer {
    private Mp3Player mp3Player;

    public Mp3Adapter(Mp3Player mp3Player) {
        this.mp3Player = mp3Player;
    }

    @Override
    public void play(String audioType, String fileName) {
        if (audioType.equalsIgnoreCase("MP3")) {
            mp3Player.playMp3(fileName);
        } else {
            System.out.println("不支持的音频格式:" + audioType);
        }
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        MediaPlayer player = new Mp3Adapter(new Mp3Player());

        player.play("MP3", "song.mp3"); // 输出:播放MP3音频:song.mp3
        player.play("WAV", "song.wav"); // 输出:不支持的音频格式:WAV
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值