策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户
1. 定义算法族 public interface FlyBehavior { String fly(); // 飞的行为 } public interface QuackBehavior { String quack(); // 叫的行为 } public class FlyNoWay implements FlyBehavior { @Override public String fly() { return "I can't fly"; } } public class FlyRocketPowered implements FlyBehavior { @Override public String fly() { return "I'm flying with a rocket"; } } public class MuteQuack implements QuackBehavior { @Override public String quack() { return "Silence"; } } public class Quack implements QuackBehavior { @Override public String quack() { return "Quack"; } } 2. 客户使用算法 public class ModelDuck extends Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public ModelDuck() { flyBehavior = new FlyNoWay(); quackBehavior = new Quack(); } @Override public String display() { return "I'm a model duck"; } }