package strategyPattern;
public class Quack implements QuackBehavior {
@Override
public void quack() {
//实现鸭子呱呱叫
System.out.println("Quack");
}
}
package strategyPattern;
public class Quack implements QuackBehavior {
@Override
public void quack() {
//实现鸭子呱呱叫
System.out.println("Quack");
}
}
[java]
package strategyPattern;
public class Squack implements QuackBehavior {
@Override
public void quack() {
//橡皮鸭子叽叽叫
System.out.println("Squack");
}
}
package strategyPattern;
public class Squack implements QuackBehavior {
@Override
public void quack() {
//橡皮鸭子叽叽叫
System.out.println("Squack");
}
}
[java]
package strategyPattern;
public class MuteQuack implements QuackBehavior {
@Override
public void quack() {
// 什么都不做,不会叫
}
}
package strategyPattern;
public class MuteQuack implements QuackBehavior {
@Override
public void quack() {
// 什么都不做,不会叫
}
}
整合鸭子的行为,让不同的鸭子继承鸭类(Duck)
[java]
package strategyPattern;
/**
* 绿头鸭继承鸭类
* @author wwj
*
*/
public class MallardDuck extends Duck{
/**
* 因为MallardDuck继承Duck类,所以具有flyBehavior与quackBehavior实例变量
*/
public MallardDuck() {
quackBehavior = new Quack(); //真正的呱呱叫
flyBehavior = new FlyWithWings(); //会用翅膀飞
}
public void display() {
System.out.println("I'm a real Mallard duck"); //我是一个真正的绿头鸭
}
}
package strategyPattern;
/**
* 绿头鸭继承鸭类
* @author wwj
*
*/
public class MallardDuck extends Duck{
/**
* 因为MallardDuck继承Duck类,所以具有flyBehavior与quackBehavior实例变量
*/
public MallardDuck() {
quackBehavior = new Quack(); //真正的呱呱叫
flyBehavior = new FlyWithWings(); //会用翅膀飞
}
public void display() {
System.out.println("I'm a real Mallard duck"); //我是一个真正的绿头鸭
}
}
[java]
package strategyPattern;
public class RedheadDuck extends Duck{
public RedheadDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
@Override
public void display() {
System.out.println("I'm a RedheadDuck!!"); //红头鸭
}
}
package strategyPattern;
public class RedheadDuck extends Duck{
public RedheadDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
@Override
public void display() {
System.out.println("I'm a RedheadDuck!!"); //红头鸭
}
}
[java]
package strategyPattern;
public class RubberDuck extends Duck{
public RubberDuck() {
}
@Override
public void display() {
System.out.println("I'm a RubberDuck!!!");
}
}
package strategyPattern;
public class RubberDuck extends Duck{
public RubberDuck() {
}
@Override
public void display() {
System.out.println("I'm a RubberDuck!!!");
}
}
[java]
package strategyPattern;
public class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay(); //不会飞
quackBehavior = new Quack(); //会叽叽叫
}
@Override
public void display() {
System.out.println("I'm a model duck");
}
}
package strategyPattern;
public class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay(); //不会飞
quackBehavior = new Quack(); //会叽叽叫
}
@Override
public void display() {
System.out.println("I'm a model duck");
}
}
[java]
package strategyP