所谓适配器模式就是将一个类的接口,转换成客户期望的另一个接口。它可以让原本两个不兼容的接口能够无缝完成对接。
让我们通过一个简单的例子来说明适配器模式。假设你有一个旧的系统,它有一个用于显示文本的组件,接口如下:
java
// 旧的文本显示接口
interface OldTextComponent {
void displayText(String text);
}
现在,你正在开发一个新的系统,它有一个名为 NewTextComponent
的文本显示组件,接口如下:
java
// 新的文本显示接口
interface NewTextComponent {
void show(String content);
}
但是,你的新系统中的某些部分需要使用旧系统的文本显示组件。这时候,适配器模式就可以派上用场。首先,创建一个适配器,将 OldTextComponent
适配成 NewTextComponent
:
java
// 适配器类
class TextComponentAdapter implements NewTextComponent {
private OldTextComponent oldTextComponent;
public TextComponentAdapter(OldTextComponent oldTextComponent) {
this.oldTextComponent = oldTextComponent;
}
@Override
public void show(String content) {
// 调用旧系统的方法来适配新系统的接口
oldTextComponent.displayText(content);
}
}
现在,你可以在新系统中使用适配器,无需修改旧系统的代码:
java
public class Client {
public static void main(String[] args) {
// 使用新的文本组件
NewTextComponent newTextComponent = new NewTextComponentImpl();
newTextComponent.show("New System Text");
// 使用适配器,将旧的文本组件适配成新的接口
OldTextComponent oldTextComponent = new OldTextComponentImpl();
NewTextComponent adapter = new TextComponentAdapter(oldTextComponent);
adapter.show("Adapted Text");
}
}
这样,通过适配器模式,你在新系统中可以无缝使用旧系统的组件,同时保持了新系统的一致性和灵活性。适配器将旧系统的接口转换成了新系统所需的接口,实现了两者的兼容。