结构型模式-适配器模式

1.定义

将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

2.介绍

  • 适配器模式属于结构型模式。
  • 适配器模式有类适配器模式和对象适配器模式这两种。
  • 生活中的手机充电器就是一个适配器的例子,手机一般都是在5V的电压下进行充电,但是外部的电压都是220V,那怎么办,这就需要充电器去适配了,将220V的电压转换为5V。
  • 实际开发中,我们常遇到两个类之间的接口不兼容,但是又不想去改动接口,这可以通过适配器模式来解决这个问题。

3.UML类图

角色说明:
  • Adapter(适配器接口):即目标角色,定义把其他类转换为何种接口,也就是我们期望的接口。
  • Adaptee(被适配角色):即源角色,一般是已存在的类,需要适配新的接口。
  • ConcreteAdapter(具体适配器):实现适配器接口,把源角色接口转换为目标角色期望的接口。

4.对象适配器模式实现

首先来说下对象适配器模式的实现方式,就以电压转换为例子。

5.类适配器模式实现

类适配器只要是通过继承源目标类来实现。类适配器模式只要通过继承源目标类来实现,无需持有源目标对象。

两者之间的比较:

  • 类适配器采用了继承的方式来实现;而对象适配器是通过传递对象来实现,这是一种组合的方式。
  • 类适配器由于采用了继承,可以重写父类的方法;对象适配器则不能修改对象本身的方法等。
  • 适配器通过继承都获得了父类的方法,客户端使用时都会把这些方法暴露出去,增加了一定的使用成本;对象适配器则不会。
  • 类适配器只能适配他的父类,这个父类的其他子类都不能适配到;而对象适配器可以适配不同的对象,只要这个对象的类型是同样的。
  • 类适配器不需要额外的引用;对象适配器需要额外的引用来保存对象。

一般使用对象适配器。具体问题具体分析。

6. 优点

  • 提高了类的复用性,适配器能让一个类有更广泛的用途。
  • 提高了灵活性,更换适配器就能达到不同的效果。不用时也可以随时删掉适配器,对原系统没影响。
  • 符合开放封闭原则,不用修改原有代码。没有任何关系的类通过增加适配器就能联系在一起。

7. 缺点

  • 过多的使用适配器,会让系统非常零乱,不易整体进行把握。明明调用A接口,却被适配成B接口。

8. Android中的源码分析

说到适配器,ListViewRecyclerView就再熟悉不过了,这里就以RecyclerView来分析。

参考:https://www.jianshu.com/p/31686bf8f9a2

posted @ 2018-12-26 16:39  随易来了  阅读(171)  评论(0编辑  收藏  举报