如果说创建型设计模式的关注重点在于一个对象内部结构的话(常常是接口与实现的组合),那么结构性设计模式的关注重点就在于多个对象之间的组合方式。
结构型设计模式一共包括七种:适配器模式、桥接模式、组合模式、装饰模式、门面模式、享元模式和代理模式。今天我们主要来聊聊最常用到的适配器模式。
一、模式原理分析
适配器模式的原始定义是:将类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。
该定义中明确说明了适配器模式的关键点就在于转换,而转换时要在已有的接口基础上做好兼容。
这里我们还是直接来看看适配器模式的 UML 图,如下所示:
从 UML 图中,我们可以看出适配器模式中包含三个关键角色:
-
目标类, 适配器类即将要进行适配的抽象类或接口;
-
适配器类, 可以是类或接口,是作为具体适配者类的中间类来使用;
-
具体适配者类, 可以是内部的类或服务,也可以是外部对象或服务。
我们再来看看 UML 图对应的代码实现,如下所示:
public abstract class TargetAbstraction {
public abstract String filter(String str);
}
public class TargetAbstractionImpl extends TargetAbstraction {
@Override
public