设计模式-适配器模式

适配器模式

适配器模式(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
--------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值