目的:将一个方块放入一个圆洞中
包装某些对象,让它们的接口看起来不像自己而像是别的东西,这样就可以在设计中,将类的接口转换成想要的接口,以便实现不同的接口。
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。这让用户可以从实现的接口中解耦。如果一段时间以后我们想要改变接口,适配器可以将改变的部分封装起来,客户就不必为了对应不同的接口而每次跟着修改。
现实中的适配器:
有两种适配器:对象适配器 和 类适配器。
看起来很像? 是的没错 唯一的差别就在于类适配器继承了Target和Adaptee,而对象适配器利用组合的方式将请求传递给被适配者。
对象适配器:使用组合,不仅可以适配某个类,还可以适配该类的任何子类。
类适配器:只能采用某个特定的被适配类,But 一个最大的优点是不需要重新实现整个被适配者,必要的时候,可以覆盖被适配者的行为。
且看一例:通过适配器将一只火鸡”变成“鸭子