Adapter接受一种类型,并为其它类型产生一个接口。Adapter就是对原类型接口的一种包装,也就是包装器wrapper。

它是个双重的模式,有结构型类模式和结构型对象模式两种。以下为两种情况下的图示。

Adapter模式主要是为了解决两个已有接口之间不匹配的问题。它不考虑这些接口是怎样实现的,也不考虑它们各自可能会如何演化。这种方式不需要对两个独立设计的类中的任一个进行重新设计,就能够使它们协同工作。

最容易让我想到的一个应用场合就是对三方工具库lib的包装,在项目中方便使用这些接口。如考勤机,扫描枪,电脑秤这些硬件提供的编程接口。

注意Facade与Adapter的区别: Facade定义一个新的接口,而Adapter则复用一个原有的接口,它使两个已有的接口协同工作。