介绍
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
使用场景:
1.系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。
2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3.需要一个统一的输出接口,而输入端的类型不可预知。
优点:
1.更好的复用性。
2.更好的扩展性。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统地功能。
缺点:
1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。 2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。
UML类图
Adapter.jpg代码实现
TypeC.java
public interface TypeC {
public TypeC getType();
}
Usb.java
public class Usb {
public Usb getUsb() {
return this;
}
}
Adapter.java
public class Adapter implements TypeC {
private Usb usb;
public Adapter(Usb usb) {
this.usb = usb;
}
public Usb getUsb() {
return usb;
}
@Override
public TypeC getType() {
return this;
}
}
网友评论