- 什么是适配器模式?
适配器模式是一种设计模式,它允许一个类的接口与另一个类的接口不兼容的情况下,实现互操作性。它通过将一个类的接口转换成客户希望的另一个接口,来使原本接口不匹配的类可以一起工作。 - 适配器模式的组成
适配器模式由以下几个部分组成:
(1)目标(Target):定义客户所期望的接口;
(2)客户(Client):与目标对象协同工作;
(3)适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口;
(4)被适配者(Adaptee):需要适配的类。 - 适配器模式的例子
假设我们有一个接口,它定义了一个方法,用于获取一个字符串:
public interface StringRetriever {
String getString();
}
现在,我们有一个类,它实现了另一个接口,该接口定义了一个方法,用于获取一个整数:public class IntegerRetriever implements IntegerRetriever {
public int getInteger() {
return 42;
}
}
我们可以使用适配器模式来让这两个接口可以一起工作:public class IntegerToStringAdapter implements StringRetriever {
private IntegerRetriever integerRetriever;
public IntegerToStringAdapter(IntegerRetriever integerRetriever) {
this.integerRetriever = integerRetriever;
}
@Override
public String getString() {
return String.valueOf(integerRetriever.getInteger());
}
}
现在,我们可以使用IntegerToStringAdapter来获取一个字符串:IntegerRetriever integerRetriever = new IntegerRetriever();
StringRetriever stringRetriever = new IntegerToStringAdapter(integerRetriever);
String str = stringRetriever.getString();
- 适配器模式的优缺点
适配器模式的优点:
(1)可以让两个接口不兼容的类一起工作;
(2)可以提高类的复用性;
(3)可以增加类的透明性;
(4)灵活性非常好。
适配器模式的缺点:
(1)过多的使用适配器,会让系统非常零乱,不易整体把握;
(2)由于JAVA至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。 - 常用的场景
适配器模式常用于以下场景:
(1)当希望使用一个已经存在的类,而它的接口不符合系统的需要时;
(2)想要创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作时。
总结:
本文介绍了Java中的适配器模式,包括它的组成、UML图、例子、优缺点以及常用的场景。适配器模式可以让两个接口不兼容的类一起工作,提高类的复用性,增加类的透明性,灵活性非常好,但是过多的使用会让系统非常零乱,不易整体把握,而且由于JAVA至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。适配器模式常用于当希望使用一个已经存在的类,而它的接口不符合系统的需要时,以及想要创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作时。
本文暂时没有评论,来添加一个吧(●'◡'●)