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

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.过度使用适配器会导致代码混乱,多处被包装。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值