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

来源:互联网 发布:网络发行许可证 编辑:程序博客网 时间:2024/06/07 11:22

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

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

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

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();        }    }}

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

0 0
原创粉丝点击