设计模式——适配器模式

适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放  mp4 文件。

适配器同时也保证了我们拓展代码的同时不会去修改到以前的代码。

那么我们来实现这样一个功能

首先定义一个播放器

public interface Player {
    void playMP3();
}

播放器的实现

public class MP3Player implements Player {
    @Override
    public void playMP3() {
        System.out.println("我可以播放MP3");
    }
}

现在我需要升级我的设备,但是这里是之前早就写好的代码,我并不想去动这样一个接口,因为可能实现这个接口的类有很多,这样修改起来就会可能出问题

那么这时候我们重新定义一个升级的播放器可以播放mp4也可以播放mp3

public interface UpgradePlayer {
    void playMP4();
}

编写实现

public class MP3PlayerAdapter extends MP3Player implements UpgradePlayer{
    @Override
    public void playMP4() {
        playMP3();
        System.out.println("我可以播放MP4");
    }
}

测试

public class Test {
    public static void main(String[] args) {
        MP3PlayerAdapter mp3PlayerAdapter = new MP3PlayerAdapter();
        mp3PlayerAdapter.playMP4();
    }
}

结果

我可以播放MP3
我可以播放MP4

这样我们很好的保证了在不更改之前代码的情况下进行拓展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值