设计模式-Adapter适配器模式

角色

  • Target(目标对象)
  • Client(请求者)
  • Adapter(适配)
  • Adaptee(被适配)
接口实现

在这里插入图片描述

继承方法

在这里插入图片描述

举个栗子

日常的直流电压是220V,但是笔记本手机等可能需要的是5V-20V,那么如何使用220V的交流电压给手机充电呢?
我们会用一个手机大头,也就是充电器,这个东西可以将电压转换为适合手机的电压。
充电器充当了适配器。
Java是面向对象的语言,在面向对象的世界里,有什么不能解决的问题,那就再加一层。
所以,Adapter模式也是这个思想,现有的代码和新的代码没有办法直接结合,那么就再加一层Adapter,让现在的新的代码可以使用旧的代码。
虽然在我们学习Java过程中,可能把原来的代码稍微改一下就可以了,但是在工作中,代码量非常大的情况下,牵一发而动全身,只要改了一行代码,都需要重新做测试,因此,应该尽量避免修改已经做过充分测试的代码,这样在添加了Adapter类或接口的时候,代码出问题就只需要重新测试新添加的代码,而不需要对原来已经测试过并且没有bug的代码重新测试。

实现方法

Java中可以通过继承父类或实现接口来让两者有关系。
所以实现方法也是两种。首先看实现接口的方法。

接口实现

Banner类是已经有的代码
Print是新的代码,是一个接口
PrintBanner是我们的Adapter,
那么要将新的代码和旧的代码联系在一起,我们就让这个PrintBanner实现新的接口,继承旧的类。
在Main里面通过Print声明一个PrintBanner对象,这样就实现了Adapter模式来让新的代码可以重用旧的代码。

在这里插入图片描述

当然还可以通过继承实现

Java里面不支持多继承,那么如何通过继承实现上面可以用接口实现的功能?
如果了解Spring/SpringBoot框架,就知道这些框架里面常用的IOC,依赖注入方法。
在现在的类里面注入需要的类,然后就可以调用注入的类中的方法。
所以例子中的功能应该如何实现?
这里面是通过在我们的Adapter中注入Adaptee对象,来调用Adaptee中的方法。
这个例子里面也就是PrintBanner中注入Banner对象。这样PrintBanner就只需要继承Print一个父类,在Main里面还是和接口的使用方法一样,通过声明Print来创建一个PrintBanner对象。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值