提供一个共同的接口,让两个原本不能接合在一起的东西可以接合在一起。
或者说,提供一个包装类,将A按照B的要求包装一下,使得B可以使用A。
适配器适用于两个已存在,且不方便更改的情况。或者说,只新增了一个适配器,原先的两个东东无须更改,符合开闭原则。这点又有点象外观模式。
class Adapter extends Target {
private Adaptee adaptee; //适配者;就是需要被适配的家伙;
public Adapter(Adaptee adaptee) { //适配器
this.adaptee=adaptee;
}
public void request() {
adaptee.specificRequest(); //转发调用
}
}
适配器模式比较容易理解。但还有一些适配器模式的变种:
1、默认适配器模式
接口里面的方法很多,如果只需实现其中一些的话,可以设置一个抽象类,继承该接口,将不必要的方法实现为空方法,而具体类继承抽象类,实现必要的方法。
2、双向适配器
适配器同时包含对目标类和适配者类的引用,那么目标类固然可以通过它来调用适配者的方法,同时适配者也可以通过它来调用目标类方法。