适配器模式,据说世界上至少存在一个完全适配你灵魂的人

50 篇文章 0 订阅
44 篇文章 0 订阅

​ 终于来到了这一天,最后一篇设计模式啦,虽然是最后一篇,但设计模式的运用永无止境!

​ 据说每个人生下来都只是一半,而这个世界上至少会存在那么一个人,它与你的灵魂完全契合完全互补,就像散落在各处的钥匙,总能找到一扇门可以打开… …没错就是我们今天要讲的适配器模式啦!

​ 什么是适配器模式,运用在什么场景,有什么优缺点?三大种类设计模式中,结构型模式、创建型模式、行为型模式它属于哪一类?

​ 适配器模式是作为两个不兼容接口之间的桥梁,这种设计模式属于结构型模式,这类模式更关注类和对象之间的结合

当你需要将一个类的接口转换成客户需要的另一个接口时,你就需要使用到适配器模式,它可以将原本不同接口不兼容,不可以一起工作的类一起运转。生活中也有很多 常见的例子,比如说读卡器,电脑不支持直接连接内存条(手机或者mp3等插入的小内存条呀~),将内存条插入读卡器中,再将读卡器插入电脑就可以进行内存条的读写了;又或者各种播放格式的转换,avi转mp4等等;当你在国内买了个电器,去到美国使用,插电的时候就需要用到这个模式的思想,第一个是说美国和中国的家用电压不同,美国插座时110V的,中国的是220V的,第二个是说插头的类型不同,国内和美国的插座并不是一样的。

​ 回到适配器模式,它的优点第一个是说让两个没有关联(或者不兼容)的类一起运行,实现上也没有实现耦合,比较灵活。但也有不好的地方,如果过多的使用适配器也会让系统非常乱,不易进行维护和整体的控制,试想着桌面上有一堆转换的插头,你看都看眼晕了。

​ 需要注意的是,适配器模式不是在刚开始设计系统的时候运用的,而是解决正在运行项目的问题时才用到的。如果可以不使用适配器,尽量不使用,可以选择对系统进行重构。

​ 话不多说,咱们直接开干!

类图:

在这里插入图片描述

具体代码实现:

// 电压110v
public interface VoltageTarget {

    /**
     * 需要110v电压
     */
    public void accommodate110V();
}

// 电压220v
public class VoltageAdaptee {
    /**
     * 需要220v电压
     */
    public void accommodate220V() {
        System.out.println("VoltageAdaptee accommodate220V");
    }

}

// extends VoltageAdaptee 是因为本质是为220v进行服务
// implements VoltageTarget 是因为要使用110v 就需要完成对应110v的接口
public class VoltageAdapter extends VoltageAdaptee implements VoltageTarget {

    // VoltageTarget需要的是accommodate110V 但是VoltageAdaptee没有
    // 所以其实是在accommodate110V调用了VoltageAdaptee的220v方法
    // 包装了一层(比较简单的例子,正常220v转110v肯定还有其他的逻辑)
    @Override
    public void accommodate110V() {
        this.accommodate220V();
    }

}

public class Client {
    public static void main(String[] args) {
        VoltageTarget voltageAdapter = new VoltageAdapter();
        voltageAdapter.accommodate110V();
    }
}
/*
VoltageAdaptee accommodate220V
*/

​ 好啦,设计模式就讲到这里了,咱们要开新章节啦!同时也希望本篇文章对你在系统编写,架构设计时有一点点启发和帮助作用。
在这里插入图片描述

愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。

道阻且长,往事作序,来日为章。

期待我们下一次相遇!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KnightHONG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值