适配器模式:是一种结构型设计模式,它允许将不兼容的接口转换为客户端所期望的接口
适配器模式优点:
- 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有结构
- 增加了类的透明性和复用性,提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用
- 灵活性和扩展性非常好
- 类适配器模式:置换一些适配者的方法很方便
- 对象适配器模式:可以把多个不同的适配者适配到同一个目标,还可以适配一个适配者的子类
适配器模式缺点:
类适配器模式:
- 一次最多只能适配一个适配者类,不能同时适配多个适配者
- 适配者类不能为最终类
- 目标抽象类只能为接口,不能为类
对象适配器模式:在适配器中置换适配者类的某些方法比较麻烦
适配器模式包含如下角色:
- Target:目标抽象类
- Adapter:适配器类
- Adaptee:适配者类
适用场景:
- 当系统中的一个类的接口与另一个类的接口不兼容时,可以使用适配器模式来将其转换为与客户端所期望的接口兼容的接口
- 当需要重用一些现有的类,但是这些类的接口与系统中其他类的接口不匹配时,可以使用适配器模式
- 当需要将一个类的接口转换为其他类的接口时,可以使用适配器模式
类适配器:
对象适配器:
将一个正方形类适配成一个圆形类:
类适配器:
1 | // 圆形类接口 |
对象适配器:
1 |
|
使用适配器模式将 WAV 格式的音乐转换为 MP3 格式的音乐,以便能够在老版本的音乐播放器上播放
1 | // 目标接口,老版本的音乐播放器只能播放 MP3 格式的音乐 |
- 本文作者: zzr
- 本文链接: http://zzruei.github.io/2023/04f70eccfd.html
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!