设计模式详解(六):适配器模式——Adapter

适配器模式及其作用

适配器模式是一种结构型设计模式。所谓结构型是指在代码结构方面的设计模式。适配器模式作为中间层,可以让交互接口不兼容的两个类或模块间正常交互协作。双方只面向适配器工作,无需关心适配器的另一端是谁及其工作方式。

现实生活举例

苹果电脑是没有USB插孔的,如果想要连接USB插头的设备,必须使用适配器。对于苹果电脑来说,与满足自身接口协议的适配器交互,不知道也不关心在适配器的另一端的设备的交互协议是怎样的。对于USB设备来说,只与适配器的USB插口交互,同样也不关心另一端的情况。在这里插入图片描述

适配器模式的好处

  • 可以让接口不兼容的两个模块交互。当交互的双方接口不兼容时,如果不愿修改已有代码的功能,因为变更意味着风险,可能引入bug,另外,有可能根本没有权限修改,比如一方是第三方类库。此时使用适配器模式,可以让双方无缝对接。
  • 单一职责。交互的双方专注于自己的主责,将交互设计与数据转换分离到Adapter中。

适配器模式的实现

关系图

交互主动方称为Client,交互被动方称为Service。
在这里插入图片描述

实现步骤

  1. 根据交互主动方Client所要求的交互方式和数据格式,声明Adapter接口,定义一组交互方法。
  2. 定义一个Adapter类,内部持有一个Service对象,所有的交互方法基于Service的功能实现。
  3. Client内部持有一个成员变量,类型为Adapter接口类型,可接收任何遵循Adapter接口的对象。
  4. 当不同的Service想提供服务时,创建新的Adapter接口实现类,基于该Service,遵循Adapter接口实现服务功能。

适配器模式的适用场景

  • 想要接口不兼容的两方交互,而不用修改两方的代码。可以使用适配器作为中间者,建立沟通的桥梁
  • 设计一个工具类或功能模块,根本无法预知交互方的交互方式及数据格式,但自身的工作流程及依赖功能已知,此时可将依赖的功能抽象成适配器接口,完成自己的实现。想要与之沟通的类或模块,创建遵循该适配器接口的适配器,提供相应功能。

适配器模式示例

Android中,RecyclerView便使用了适配器模式。RecyclerView作为UI组件,只负责展示数据,至于数据的来源,获取方式(如数据库、网络、内存),完全不关心,也无法预知。所以定义了获取数据的Adapter接口,想要为Recycler提供数据,需定义一个类,实现Adapter接口,提供展示的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vincent(朱志强)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值