定义:( Adapter)
将一个类的接口转换为客户希望的另一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作
例子:
适配器模式比较容易理解, 现实生活中也有许多适配器的模型, 比如之前耳机插口有粗有细,然后就出现了一种 粗细口转化的工具
这种工具我们就可以看作为适配器. 适配器模式主要适用于希望复用一些现存的功能接口,但是接口的形式与要求不一致的情况.
适配器模式结构图:
代码示例:
class Earphone { public: virtual void listen(); }; class EarphoneAdapter: EarPhone { SmallEarPhone * smEar; public: void listen() { return smEar->listenMusic(); } }; class SmallEarPhone { public: void listenMusic() { cout <<"bbulabulabua" << endl; } }; class Client { public: void playMusic() { earphone = new EarPhoneAdapter(); earphone.listen(); delete earphone; } private: EarPhone * earphone; }
客户端听歌, 但是第三方库已经实现了听歌的功能, 却是用细孔耳机听歌的, 我们现在只有粗孔耳机,因此,需要适配器将粗孔耳机转化为细孔的,然后使用第三方的听歌功能.
适配器模式适用的场景:
当双方都不方便修改自己的接口时,考虑使用适配器模式. 常见的是我们在调用第三方库时, 当需要的接口形式与我们提供的不一致时, 考虑使用适配器将其转换.