1. 模式定义
将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 其别名为包装器(Wrapper)
2. 使用场景
- 如果你想要使用一个已经存在的类,但是它的接口不符合你的需求,这种情况可以使用适配器模式,来把已有的实现转换成你需要的接口;
- 如果你想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作,这种情况可以使用适配器模式,到时候需要什么就适配什么;
- 如果你想使用一些已经存在的子类,但是不可能对每一个子类都进行适配,这种情况可以选用对象适配器,直接适配这些子类的父类就可以了。
3. 类适配器
1. 定义
类的适配器模式把适配的类的API转换为目标类的API。
2. 总结
- 类适配器使用对象继承的方式,是静态定义的方式;
- 对于类适配器,适配器可以重新定义Adaptee的部分行为
- 对于类适配器,仅仅引入了一个对象,并不需要额外的引用来间接得到Adaptee
- 对于类适配器,由于直接继承了Adaptee,使得适配器不能和Adaptee的子类一起工作
4. 对象适配器
1. 定义
把适配的类的API转换为目标类的API,所不同的是其使用委派关系连接到Adaptee类。
2. 总结
- 对象适配器使用对象组合的方式,是动态组合的方式;
- 对于对象适配器,一个适配器可以把多种不同的源适配到同一个目标;
- 对于对象适配器,要重新定义Adaptee的行为比较难;
- 对于对象适配器,需要额外的引用来间接得到Adaptee。
5. 优缺点
1. 优点
- 更好的复用性
- 更好的扩展性
2. 缺点:
- 过多的使用适配器,会让系统非常零乱,不容易整体进行把握。