适配器模式好比一个中介,使原本没有关系的两个事务联系在一起。
模式的意图
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
模式的适用性
当客户需要使用的现有类和它的接口不匹配。
客户想要重用的类与接口不兼容。
模式的参与者
目标(Target):目标是一个接口,该接口是客户想要使用的接口。
被适配者(Adapter):被适配者是一个已经存在的接口或者抽象类,这个接口或者抽象类需要适配器。
适配器(Adapter):一个类,该类实现了目标接口并包含有被适配者的引用。
目标:ThreeElectricOutlet.java
public interface ThreeElectricOutlet {
public abstract void connectElectricCurrent();
}
被适配者:TwoElectricOutlet.java
public interface TwoElectricOutlet {
public abstract void connectElectricCurrent();
}
适配器:ThreeElectricAdapter.java
public class ThreeElectricAdapter implements ThreeElectricOutlet{
TwoElectricOutlet outlet;
public ThreeElectricAdapter(TwoElectricOutlet outlet) {
this.outlet = outlet;
}
@Override
public void connectElectricCurrent() {
outlet.connectElectricCurrent();
}
}
总结来说:就是在适配器类中把目标接口实现了,并且把被适配者的引用分装在里面。
优点
- 目标和被适配者是完全解耦关系。
- 适配器模式满足“开-闭原则”。当添加一个实现Apdatee接口的新类时,不必修改Adapter,Adapter就能对这个新类的实例进行适配。