设计模式之策略模式

来源:互联网 发布:java文件下载原理 编辑:程序博客网 时间:2024/04/28 02:56

这里写图片描述
Duck.java

package duck;import quack.QuackBehavior;import fly.FlyBehavior;public abstract class Duck {    FlyBehavior flyBehavior;    QuackBehavior quackBehavior;    public Duck(){    }    public abstract void display();    public void performFly(){        flyBehavior.fly();    }    public void performQuack(){        quackBehavior.quack();    }    public void swim(){        System.out.println("All ducks float, even decoys!");    }    public void setFlyBehavior(FlyBehavior fb){        flyBehavior = fb;    }    public void setQuackBehavior(QuackBehavior qb){        quackBehavior = qb;    }}

MallardDuck.java

package duck;import quack.Quack;import fly.FlyWithWings;public class MallardDuck extends Duck {    public MallardDuck() {        quackBehavior = new Quack();        flyBehavior = new FlyWithWings();    }    @Override    public void display() {        System.out.println("I'm a real Mallard duck");    }}

ModelDuck.java

package duck;import quack.Quack;import fly.FlyNoWay;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");    }}

FlyBehavior.java

package fly;public interface FlyBehavior {    public void fly();}

FlyNoWay.java

package fly;public class FlyNoWay implements FlyBehavior {    @Override    public void fly() {        System.out.println("I can't fly");    }}

FlyRocketPowered.java

package fly;public class FlyRocketPowered implements FlyBehavior {    @Override    public void fly() {        System.out.println("I'm flying with a rocket!");    }}

FlyWithWings.java

package fly;public class FlyWithWings implements FlyBehavior {    @Override    public void fly() {        System.out.println("I'm flying!!");    }}

QuackBehavior.java

package quack;public interface QuackBehavior {    public void quack();}

Quack.java

package quack;public class Quack implements QuackBehavior {    @Override    public void quack() {        System.out.println("Quack");    }}

MuteQuack.java

package quack;public class MuteQuack implements QuackBehavior {    @Override    public void quack() {        System.out.println("<<Silence>>");    }}

Squeak.java

package quack;public class Squeak implements QuackBehavior {    @Override    public void quack() {        System.out.println("Squeak");    }}
0 0
原创粉丝点击