适配器模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配器模式相关的知识,希望对你有一定的参考价值。
配器模式定义如下:
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 |
从定义中,很容易理解该模式所要解决的问题和解决方法。在实际开发中,由于种种原因(可能是历史原因,可能是设计与某些外部实现不匹配),常会出现一些接口或模块间不兼容的情况。这时,可以通过引入一个适配器(Adapter)来作为一个”和事老“,在中间起到兼容的作用。
适配器模式可以分为对象适配器和类适配器。前者中,适配器与适配者之间是关联关系,后者是继承或者实现关系。
- 对象适配器的使用频率会相对较高,它的实现结构通常如下:
Target是抽象的对外接口,定义了request方法。而Adaptee是提供具体实现的模块,提供的方法却是spciflicRequest方法。因此是不兼容的,这是引入了Adapter---适配器!由它来实现抽象接口Target,持有被适配者的对象,并在request实现中调用真正的功能模块Adaptee的spciflicRequest。这样两端不兼容的部分就通过适配器连接了起来。
- 类适配器与对象适配器的最大区别在于适配器与适配者间的关系。类适配器中的关系为继承或者实现关系。
另一类特殊变种:缺省适配器。如果一个接口定义了10个方法,但某些实现中只需要其中的3个,直接使用的情况下,每个实现类都要实现这10个方法。这时可以引入一个抽象类实现接口,并未每个接口定义的方法提供一个空实现。这样具体实现类继承这个抽象类,就可以有选择的实现其中的一部分。这时的这个抽象类,我们称为缺省适配器。
总结:
- 优点:
- 解决不兼容场景
- 调用方和实现方解耦,增加透明性
- 已有模块和功能的复用,同时不修改它们的代码
- 一个对象适配器可以适配多个适配者,简化对外接口
- 缺点:
- 类适配器由于Java不支持多继承,一次只能适配一个适配者
- 类适配器适配者不能为final类
- 类适配器的目标抽象类(target)只能为接口,因为不能多继承,有局限性
以上是关于适配器模式的主要内容,如果未能解决你的问题,请参考以下文章