SimUDuck 策略模式_simuduck

添加一个 FlySuperDuck.java implement IFlyBehavior

在具体鸭子中可以拥有这种行为:

public ModelDuck()

{

this.flybehavior=newFlySuperDuck();

}


这样就可以实现给某种鸭子添加某种行为。

SimUDuck 策略模式_simuduck_02

在具体鸭子中可以拥有这种行为:

public ModelDuck()

{

this.flybehavior=newFlySuperDuck();

}


这样就可以实现给某种鸭子添加某种行为

SimUDuck 策略模式_策略模式_03

可以添加一种接口Ispeak,有一个speak方法。这样鸭子们就有了另一种行为speak()

父类中只需要添加一个speakbehavior,子类就可以有具体的实现。例如有一个DonaldSpeak实现了Ispeak接口,子类就可以拥有这个具体的行为n利用继承来提供Duck的行为,这会导致下列哪些缺点?nA.代码在多个子类中重复;

nB.运行时的行为不容易改变;

nE. 鸭子不能同时又飞又叫,不能有多继承;

nF.改变会牵一发而动全身,造成其他鸭子不想要的改变;