一、概述
适配器模式将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式的关键是建立一个适配器,这个适配器实现了目标接口并包含有被适配者的引用。
二、适配器模式的结构
Java适配器模式的结构中包括三种角色:
目标(Target):目标是一个接口,该接口是客户想使用的接口。
被适配者(Adaptee):被适配者是一个已经存在的接口或抽象类,这个接口或抽象类需要适配。
适配器(Adapter):适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配器的职责是对被适配者接口(抽象类)与目标接口进行适配。
UML 图如下:
三、示例程序。
//目标
public interface Sheep {
void eat();
}
//被适配者
public interface Wolf {
void eatMeat();
}
//适配器
public class SheepAdapter implements Sheep {
private Wolf wolf;
public SheepAdapter(Wolf wolf) {
this.wolf = wolf;
}
@Override
public void eat() {
this.wolf.eatMeat();
}
}
//测试类
public class Client {
public static void main(String[] args) {
Wolf wolf = new Huitailang();
Sheep sheep = new SheepAdapter(wolf);
sheep.eat();
}
}
四、适配器模式的优点。
目标(Target)和被适配者(Adaptee)是完全解耦的关系。
适配器模式满足“开-闭原则”。当添加一个实现Adaptee接口的新类时,不必修改Adapter,Adapter就能对这个新类的实例进行适配。