一.策略模式
定义一组算法,将每个算法封装起来,并且使他们之间可以互换.策略模式让算法独立于使用它的客户而变化,也称为政策模式
何时使用?一个系统有许多许多类,而区分它们的只是他们直接的行为.
如何解决?将这些算法封装成一个一个的类,任意地替换。
二.代码实现
//策略接口
interface Strategy{
public void doAction();
}
//算法A
class StrategyA implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm A");
}
}
//算法B
class StrategyB implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm B");
}
}
//算法C
class StrategyC implements Strategy{
@Override
public void doAction() {
System.out.println("algorithm C");
}
}
//环境类
class Context{
private Strategy strategy;
public void changeStrategy(Strategy strategy){
this.strategy = strategy;
}
public void dosomething(){
strategy.doAction();
}
public Strategy getStrategy() {
return strategy;
}
}
三.与状态模式区别
可以看出,模板和状态模式基本一致,但是区别就是,状态模式侧重点是一个环境对象目前的状态,会根据状态做出不同的行为,影响整个对象.而策略模式就是侧重于什么时候做什么事
本文介绍了策略模式的概念、应用场景,通过代码实例展示了如何使用策略接口和策略类来实现算法的灵活切换。并与状态模式进行对比,强调了策略模式侧重行为选择而非状态变化。
133

被折叠的 条评论
为什么被折叠?



