前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3.设计模式--适配器模式(adapter模式)

3.设计模式--适配器模式(adapter模式)

作者头像
大猫的Java笔记
发布2021-09-29 15:46:07
7830
发布2021-09-29 15:46:07
举报

1.场景

适配器模式可能是开发人员用的最多的一种设计模式,做后台开发你可能每天都在使用。只是不知道他的名字;现实中的适配器你应该不会陌生,新款的IQOO 8 pro手机充电器已经达到了120w,实际上充电器就是一个适配器,他的作用就是将家用220v的交流电转换为供手机可以充电使用的直流电。适配器可以理解为就是一个中间协调的工具。

适配器模式分为2种,类适配器(使用继承)和对象适配器(使用委托)

2.类适配器结构图

3.实现适配器模式

AlternatingCurrent相当于交流电,他有两个抽象方法,输出高电压和低电压。

DirectCurrent相当于直流电,同样也是2个方法,输出12V的直流电和6V的直流电。

Adapter相当于就是适配器,他的作用就是将交流电转换为直流电,供手机充电使用。Adapter通过实现交流电的方法,继承直流电,然后进行包装将交流电变成12V或者6V电压

测试结果如下,可以看到使用适配器进行转换的时候能够将交流电转换为12V的直流电或者6V的直流电。

通过上面的例子可以看到实际上是很受局限性的,例如我们现在不仅要将交流电转换为直流电而是无线电,此时由于使用了继承,在Java中是不支持类的多继承的,所以没办法进行扩展,那我们可以使用委托啊。下面就是使用委托实现适配器模式。

4.对象适配器结构图

同样AlternatingCurrent是提供输出电压。只不过自己是交流电不能供手机使用。

DurectCurrent是提供输出12V直流电。和6V的直流电。

Adapter作为适配器,将交流电转换为直流电,相比类适配器,我们使用的是委托,也就是在Adapter定义了一个直流电的成员变量。这样就能解决适配器不能转无线电了。如果要转无线电只需要再定一个无线电类的成员变量。

5.经常用到的适配器模式

在使用MyBtais-Plus的时候,sevice层的实现类,可以看到实现了service接口,同时继承了ServiceImpl,其中Service提供了基础的简单操作。比如我们要查询一个用户id为1的数据,实际上service有这个能力吗。显然依靠他是没有的,实际上我们是通过serviceImpl中的byId操作。而我们自己的service实现是不是有点类似于就是一个适配器呢。

适配器模式的优缺点

优点:

1.如果我们不使用适配器而是直接调用具体的实现,首先一旦具体的实现发生改变,所以调用具体实现的地方都得改更,当使用适配器后只需要更改适配器,所有的调用者无需变动。

2.其次对于开发者而言很多东西并不是一次开发,后期存在维护如果使用适配器那么相当于就是调用的现有的代码,这份代码肯定是已经经过测试的,一旦出现问题,那么我们也可以快速定位是适配器有问题。

缺点:

1.过度使用适配器会导致代码混乱,多处被包装。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档