我是靠谱客的博主 坚强大地,最近开发中收集的这篇文章主要介绍设计模式-适配器模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

  • 优点:
    1、可以让任何两个没有关联的类一起运行。
    2、提高了类的复用。
    3、增加了类的透明度。
    4、灵活性好。

  • 缺点:
    1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,

  • 使用场景
    有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

实现

  • 正常运行的老接口:
public interface Play {
    /**
     * 播放MP3
     */
    public void playMp3();
    /**
     * 游戏
     */
    public void playGame();
}
@Slf4j
public class PlayImpl implements Play{
    @Override
    public void playMp3() {
        log.info("play mp3");
    }

    @Override
    public void playGame() {
        log.info("贪吃蛇");
    }
}
  • 老接口不满足现在的需求,需要扩展功能并调整部分旧功能
/**
 * @description:需要提供的所有功能列表
 */
public interface PlayMore {

    /**
     * 新增功能:mp4
     */
    public void playMp4();
    /**
     * 新增功能:video
     */
    public void playVideo();
    /**
     * 旧功能
     */
    public void playMp3();
    /**
     * 旧功能(需重写)
     */
    public void playGame();
}
@Slf4j
public class PlayMoreImpl extends PlayImpl implements PlayMore{

    /**
     * 重写父类游戏方法
     */
    @Override
    public void playGame() {
        log.info("连连看");
    }

    /**
     * 新功能实现
     */
    @Override
    public void playMp4() {
        log.info("play mp4");
    }

    /**
     * 新功能实现
     */
    @Override
    public void playVideo() {
        log.info("play video");
    }
}
  • 调用
public class main {
    public static void main(String[] args) {
        PlayMore play = new PlayMoreImpl();
        play.playMp4();
        play.playVideo();
        play.playGame();
        play.playMp3();
    }
}
---------------------------------------------------------------------------
16:56:51.702 [main] INFO com.yss.dataMiddle.design.adapter.PlayMoreImpl - play mp4
16:56:51.722 [main] INFO com.yss.dataMiddle.design.adapter.PlayMoreImpl - play video
16:56:51.722 [main] INFO com.yss.dataMiddle.design.adapter.PlayMoreImpl - 连连看
16:56:51.722 [main] INFO com.yss.dataMiddle.design.adapter.PlayImpl - play mp3
--------------------------------------------------------------------------

最后

以上就是坚强大地为你收集整理的设计模式-适配器模式的全部内容,希望文章能够帮你解决设计模式-适配器模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部