其他分享
首页 > 其他分享> > 策略模式

策略模式

作者:互联网

定义:定义了算法族,分别封装起来,使它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

使用场景

UML图

代码示例

public class Duck {
    QuackBehavior quackBehavior;
    public Duck(QuackBehavior quackBehavior){
        this.quackBehavior = quackBehavior;
    }
    public void doQuack(){
        quackBehavior.Quack();
    }
}
public interface QuackBehavior {
    void Quack();
}
public class QuackBehaviorA implements QuackBehavior {
    @Override
    public void Quack() {
        System.out.println("Quack AAA");
    }
}
public class QuackBehaviorB implements QuackBehavior {
    @Override
    public void Quack() {
        System.out.println("Quack BBB");
    }
}

测试

public class StrategyTestDemo {
    public static void main(String[] args){
        Duck duck = new Duck(new QuackBehaviorA());
        duck.doQuack();
        duck = new Duck(new QuackBehaviorB());
        duck.doQuack();
    }
}

运行结果

优点:算法可以切换,自由度高

缺点:所有策略类都需要暴露给使用者,行为较多时可能会产生过多的策略类

思考

标签:Quack,策略,void,模式,算法,Duck,public,quackBehavior
来源: https://www.cnblogs.com/camcay/p/12330990.html