首页 > 代码库 > SimUDuck 策略模式

SimUDuck 策略模式

wKioL1R7S3SR7ktVAAMRqrp6ICM603.jpg

添加一个 FlySuperDuck.java implement IFlyBehavior

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

public ModelDuck()

{

this.flybehavior=newFlySuperDuck();

}


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

wKioL1R7S8Pzr3BPAAEYaAH1kjA628.jpg

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

public ModelDuck()

{

this.flybehavior=newFlySuperDuck();

}


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

wKiom1R7S5nTY4IOAAB4yG6DVng059.jpg

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

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

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

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

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

本文出自 “Vincent” 博客,请务必保留此出处http://vincent1992.blog.51cto.com/4621739/1584889

SimUDuck 策略模式