也成为:Wrapper
使用场景
- 需要使用一个现有的类,而它实现的接口和需要的接口不一致
- 想要创建一个可复用的类,来和一个不相关或者不能预知的类,也就是说,这个类不需要有需要兼容的接口
- 需要使用几个现有的类,可是,使用子类来适配他们的接口又不现实。 对象适配器能适配父类的接口。
结构
类适配器
对象适配器
参与对象
- 目标类
- 客户
- 被适配对象(接口)
- 适配器
合作方式
客户调用适配器接口上的方法,然后,适配器调用被适配对象的方法来处理请求。
使用结果
类适配器:
- 通过把责任委托给一个具体的被适配类,将被适配对象适配到目标对象。因此,类适配器在适配一个类和它的多个子类时不适用。
- 适配器重载了被适配类的一些方法,因为适配器是被适配类的子类。
- 只引入了一个对象,不需要额外的方向指针来指向被适配类。
对象适配器:
- 允许一个适配器适配多个被适配对象,也就是被适配对象和所有它的子类。适配器也可以一次性添加额外的功能到所有的被适配对象。
- 不可以覆盖被适配对象的行为,如果需要这样做,那就要实现一个被适配类的子类,然后将适配器中的指针指向它的子类。