您的位置:首页 > 编程语言 > Java开发

Java设计模式之适配器模式

2016-11-05 17:26 260 查看
 适配器模式(Adapter Pattern)将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。



public class DuckTestDrive {
public static void main(String[] args) {
MallardDuck duck = new MallardDuck();//创建一只鸭子

WildTurkey turkey = new WildTurkey();//创建一只火鸡
Duck turkeyAdapter = new TurkeyAdapter(turkey);//然后将火鸡包装进一个火鸡适配器中,使它看起来像一只鸭子

System.out.println("The Turkey says...");
turkey.gobble();//测试伙计叫
turkey.fly();//测试飞行

System.out.println("\nThe Duck says...");
testDuck(duck);

System.out.println("\nThe TurkeyAdapter says...");
testDuck(turkeyAdapter);//测试假装是鸭子的火鸡
}

static void testDuck(Duck duck) {
duck.quack();
duck.fly();
}
}
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'm flying");
}
}
public interface Turkey {//火鸡
public void gobble();//火鸡的属性,与鸭子不同
public void fly();
}
public void gobble() {//火鸡的实现
System.out.println("Gobble gobble");
}
public void fly() {
System.out.println("I'm flying 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();//调用火鸡的方法
}
}
}


参考资料《Head First设计模式》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: