interface FlyBehavior {
public void fly();
}
class SubSonicFly implements FlyBehavior {
public void fly() { System.out.println("亚音速飞行!"); }
}
class SuperSonicFly implements FlyBehavior {
public void fly() { System.out.println("超音速飞行!"); }
}
interface TakeOffBehavior {
public void takeOff();
}
class VerticalTakeOff implements TakeOffBehavior {
public void takeOff () { System.out.println("垂直起飞!"); }
}
class LongDistanceTakeOff implements TakeOffBehavior {
public void takeOff() { System.out.println("长距离起飞!"); }
}
abstract class AirCraft {
protected FlyBehavior flyBehavior; // (1)
protected TakeOffBehavior takeOffBehavior; // (2)
public void fly() {
flyBehavior.fly(); // (3)
}
public void takeOff() {
takeOffBehavior.takeOff(); // (4)
}
}
class Helicopter extends AirCraft { // (5)
public Helicopter () {
flyBehavior = new SubSonicFly(); // (6)
takeOffBehavior = new VerticalTakeOff(); // (7)
}
}
11-16
450
