设计模式(六)适配器模式

前面介绍的几种设计模式都是创建型模式,用于以不同的方式创建对象。下面我们来看看适配器模式,这是一种结构型模式,用于在两个无关的接口之间搭建桥梁。

适配器模式主要用于在新旧代码直接转换。

直接看例子吧。假设我们有一个音乐播放器。

public interface MusicPlayer {
    void playMusic();
}

class MyMusicPlayer implements MusicPlayer {

    @Override
    public void playMusic() {
        System.out.println("播放音乐");
    }
}

然后还有一个视频播放器。

public interface VideoPlayer {
    void playVideo();
}

class MyVideoPlayer implements VideoPlayer{

    @Override
    public void playVideo() {
        System.out.println("播放视频");
    }
}

我们可以看到这两个接口的方法不同,现在我们希望以一种统一的方式播放音乐和视频。所以就需要类似下面的适配器。在适配器中,我们做了一些工作,将两个接口的方法包装,统一使用play方法调用。

public interface MediaPlayer {
    void play();
}

class MediaPlayerAdapter implements MediaPlayer {
    private MusicPlayer musicPlayer;
    private VideoPlayer videoPlayer;
    private boolean isMusicPlayer = false;
    private boolean isVideoPlayer = false;

    public MediaPlayerAdapter(Object player) {
        if (player instanceof MusicPlayer) {
            musicPlayer = (MusicPlayer) player;
            isMusicPlayer = true;
        } else if (player instanceof VideoPlayer) {
            videoPlayer = (VideoPlayer) player;
            isVideoPlayer = true;
        }
    }

    @Override
    public void play() {
        if (isMusicPlayer) {
            musicPlayer.playMusic();
        } else if (isVideoPlayer) {
            videoPlayer.playVideo();
        }
    }
}

我们可以看到,适配器的作用很强大,可以将不同接口联系起来,所以适配器模式的使用非常广泛。留意一下就会在很多地方发现它的身影。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?...
    justCode_阅读 1,514评论 0 5
  • 前言:设计模式之结构型模式软件模式与具体的应用领域无关,也就是说无论你从事的是移动应用开发、桌面应用开发、Web ...
    markfork阅读 2,574评论 4 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,731评论 19 139
  • 目录 本文的结构如下: 什么是适配器模式 为什么要用该模式 模式的结构 代码示例 优点和缺点 适用环境 模式应用 ...
    w1992wishes阅读 1,001评论 0 3
  • 我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?...
    justCode_阅读 881评论 0 1

友情链接更多精彩内容