适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
该模式所涉及的角色有:
目标(Target)角色:这就是所期待得到的接口。
源(Adapee)角色:现在需要适配的类。
适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。
该模式一般有两种实现方式
1、通过Adapter适配器类,继承Adapee待适配类,实现目标接口Targetable
public class Adapee {
public void method1() {
System.out.println("this is original method!");
}
}
public interface Targetable {
/* 与原类中的方法相同 */
public void method1();
/* 新类的方法 */
public void method2();
}
public class Adapter extends Adapee implements Targetable {
@Override
public void method2() {
System.out.println("this is the targetable method!");
}
}
2、通过Adapter适配器类,持有Adapee待适配类,实现目标接口Targetable
public class Adapter implements Targetable {
private Adapee adapee;
public Wrapper(Adapee adapee){
super();
this.adapee = adapee;
}
@Override
public void method2() {
System.out.println("this is the targetable method!");
}
@Override
public void method1() {
adapee.method1();
}
}