适配器实际上分两种,有“对象”适配器与“类”适配器。我们这注意讲的是对象适配器。“类”适配器是别的语言的多继承的时候使用。就是通过继承来实现适配器。而我们要说的“对象”适配器是通过组合实现适配。
举个例子你就能明白“对象”适配器了。
假设有 鸭子接口
public interface Duck{
public void quack();
public void fly();
}
//这是绿头鸭
public class MallardDuck implements Duck{
public void quack(){
System.out.println("quack");
}
public void fly(){
System.out.println("i am fly");
}
}
//这是“街头顽禽”
public interface Turkey{
public void gobble();//火鸡不会嘎嘎叫,只会咯咯叫
public void fly();//也会飞,只是飞不远
}
//火鸡类
public class WildTurkey implement Turkey{
public void gobble(){
System.out.println("gobble");
}
public void fly(){
System.out.println(" i am fly a short distance");
}
}
//现在假设你缺少鸭子对象,想用火鸡对象来冒充。显然两者接口不同,所以不能直接使用,就可以写个适配器来实现。
public class TurkeyAdapter implements Duck{
Turkey turkey;
public TurkeyAdapter(Turkey turkey){
this.turkey = turkey;
}
public void quack(){
turkey.gobble();
}
public void fly(){
for(int i=0;i<5;i++){
turkey.fly();
}
}
//上面就是适配器的简单例子。很好理解。