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

Java设计模式_结构型_适配器模式_丑小鸭与白天鹅

2016-01-04 15:04 627 查看
转载请注明出处:/article/11557499.html

本文出自:【梁敬明的博客】

1.丑小鸭是什么样的?

  鸭子会飞也会叫,丑小鸭也是鸭子的一种,会嘎嘎的叫,可以飞行一百米远。

//鸭子
public interface Duck {
void quack();
void fly();
}

//丑小鸭
public class UglyDuck implements Duck {

@Override
public void fly() {
System.out.println("飞行一百米");
}

@Override
public void quack() {
System.out.println("嘎嘎的叫");
}

}


2.白天鹅是什么样的?

  天鹅会飞也会叫,当然白天鹅会嘎嘎的叫,天鹅飞的的距离可以达到一千米。

//天鹅
public interface Swan {
void gaggle();
void fly();
}

//白天鹅
public class WhiteSwan implements Swan {

@Override
public void fly() {
System.out.println("飞行一千米");
}

@Override
public void gaggle() {
System.out.println("嘎嘎的叫");
}

}


3.鸭子与天鹅的区别

  现在需要一只天鹅去给观众进行表演,不过现在没有天鹅,只有一只鸭子,我们需要将天鹅包装成鸭子,只要实现了天鹅的功能,我们就可以把它当做天鹅来看待。首先天鹅和鸭子都会嘎嘎的叫,鸭子依次可以飞行一百米远,天鹅依次可以飞行一千米远,不过勤能补拙,鸭子努力点飞行十次也能达到一千米,天鹅的功能鸭子都实现了,此时我们就说将鸭子适配成了天鹅。

public class SwanAdapter implements Swan {

private Duck duck;

public SwanAdapter(Duck duck){
this.duck = duck;
}

@Override
public void fly() {
for (int i = 0; i < 10; i++) {
duck.fly();
}
}

@Override
public void gaggle() {
duck.quack();
}

}


4.丑小鸭变白天鹅

  现在创建一只天鹅,然后再创建一只适成天鹅的鸭子,看看它们之间是否能达到相同的表演效果。

public class Client {

public static void main(String[] args) {
Swan whiteSwan = new WhiteSwan();
whiteSwan.gaggle();
whiteSwan.fly();

Swan swan = new SwanAdapter(new UglyDuck());
swan.gaggle();
swan.fly();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: