您的位置:首页 > 编程语言

设计模式-策略模式-代码实现

2018-02-03 00:00 363 查看


------------------------------------关于飞的行为类------------------------------

1.FlyBehavior.java

package Duck;

public interface FlyBehavior{

public void fly();
}

2.FlyNoWay.java

package Duck;

public class FlyNoWay implements FlyBehavior{

public void fly(){
System.out.println("I can't fly.");
}
}

3.FlyWithWings.java

package Duck;

public class FlyWithWings implements FlyBehavior{

public void fly(){
System.out.println("I'm flying!");
}
}

4.FlyRocketPowered.java

package Duck;

public class FlyRocketPowered implements FlyBehavior{

public void fly(){
System.out.println("Fly Rocket Powered.");
}
}

-------------------------------------------关于叫的行为类---------------------------------------

1.QuackBehavior.java

package Duck;

public interface QuackBehavior{

public void quack();
}

2.Quack.java

package Duck;

public class Quack implements QuackBehavior{

public void quack(){
System.out.println("嘎嘎叫.");
}
}

3.Squeak.java

package Duck;

public class Squeak implements QuackBehavior{

public void quack(){
System.out.println("吱吱叫!");
}
}

4. MuteQuack.java

package Duck;

public class MuteQuack implements QuackBehavior{

public void quack(){
System.out.println("不会叫!");
}
}

--------------------------------------不同种类的鸭子--------------------------------------

1.Duck.java

package Duck;

public abstract class Duck{

FlyBehavior flyBehavior;
QuackBehavior quackBehavior;

public void performQuack(){
quackBehavior.quack();
}

public void performFly(){
flyBehavior.fly();
}

public void setFlyBehavior(FlyBehavior fb){
flyBehavior = fb;
}

public void setQuackBehavior(QuackBehavior qb){
quackBehavior = qb;
}
}

2.ModelDuck.java

package Duck;

public class ModelDuck extends Duck{

public ModelDuck(){
flyBehavior = new FlyNoWay();
quackBehavior = new MuteQuack();
}

}

3.MallardDuck.java

package Duck;

public class MallardDuck extends Duck{

public MallardDuck(){
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}

}

---------------------------测试----------------------------

1.Test.java

package Duck;

public class Test{

public static void main(String[] args) {

Duck mallardDuck = new MallardDuck();

mallardDuck.performFly();
mallardDuck.performQuack();

Duck modelDuck = new ModelDuck();
modelDuck.performFly();
modelDuck.performQuack();

modelDuck.setFlyBehavior(new FlyRocketPowered());
modelDuck.performFly();
}
}

-----------------------------运行结果-----------------------------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 设计模式