定义
适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。
我们给手机充电时,电源线头头就叫电源适配器,作用就是把220V电压转换成手机充电时使用的电压,所以适配器很好理解。
优缺点
优点:
- 可以让任何两个没有关联的类一起运行。
- 提高了类的复用。
- 增加了类的透明度。
- 灵活性好
缺点:
- 过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现。
- 由于 JAVA 只能单继承,所以至多只能适配一个适配者类,而且目标类必须是抽象类。
结构
- 目标(Target): 定义一个客户端使用的特定接口 。
- 被适配者(Adaptee): 一个现存需要适配的接口。
- 适配器(Adapter): 该模式的核心。
- 客户端(Client): 使用目标接口,与和目标接口一致的对象合作。
实现
Target
源角色接口,需要被替换的目标(接口)。
public interface Target {
public void request();
}
Adaptee
目标角色,用来替换的目标。
public class Adaptee {
public void specificRequest() {
System.out.println("特殊请求");
}
}
Adapter
Adapter适配器角色,它的职责是通过继承或类关联的方式把源角色转换成目标角色。
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.specificRequest();
}
}
ConcreteTarget
源角色,需要被替换的目标。
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("普通请求");
}
}
Client(测试类)
public class Main {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
Target target2 = new Adapter();
target2.request();
}
}
-----结果------
普通请求
特殊请求
|