阅读目录
public class Duke { /** * 策略对象 - 鸭子叫行为 */ private Quackbehavior quackbehavior; /** * 策略对象 - 鸭子飞行行为 */ private FlyBehavior flyBehavior; /** * 利用多态注入具体的策略对象 */ public Duke(Quackbehavior quackbehavior, FlyBehavior flyBehavior) { this.quackbehavior = quackbehavior; this.flyBehavior = flyBehavior; } /** * 策略方法 */ public void performFly() { flyBehavior.fly(); } /** * 策略方法 */ public void performQuack() { quackbehavior.quack(); } // 其他方法}
Duke类在策略模式中扮演一个环境(Context)的角色,表示持有策略的引用(quackbehavior、flyBehavior)。
public interface Quackbehavior { void quack(); }
public interface FlyBehavior { void fly(); }
这两个接口在策略模式中扮演抽象策略(Strategy)的角色,把公共的行为封装成接口。
Quackbehavior 的实现类:
Quack.java
Squeak.java
MuteQuack.java

