![]()
策略链模式,也叫政策模式,是一种简单的模式。
蔡梁如愿成为了一名警察并被分配到了重案组,他刚刚调到重案组就参加了一个重大,这次需要剿灭一个贩毒团伙。代码设计模式因为这个贩毒团伙非常狡猾,重案组为力确保万无一失,一击即灭整个贩毒团伙,他们针对有可能发生的情况制定了多项计划,最终经过 激烈讨论他们确定了A、B、C三套计划。确定计划后,蔡梁就跟同事一起参加了这次的围剿行动,并且最终将整个贩毒团伙一网打尽。
上面的这个场景中,针对围剿贩毒团伙可能发生的情况,重案组确定了A、B、C三套计划,但是贩毒团伙并不会知道,这个就类似于设计模式中的策略模式。
定义一组算法,将每个算法封装起来,并且使他们之间可以互换。其用意是针对一组算法,将每个算法封装到具有共同接口的独立类中,从而使得它们可以相互转换,使得算法可以在不影响客户端的情况下发生变化。

该角色也叫上下文角色,有承上启下的作用,屏蔽高层模块堆策略、算法的直接处理,他持有一个Strategy类的应用。
该角色对策略、算法进行抽象,通常定义每一个策略或算法具有的方法和属性。
该角色实现抽象策略中的具体操作,含有具体的算法。
这里使用上面的现实场景做代码示例。

方法的作用看代码。。。

package P16_stategy;
/**
* 策略抽象类
*/
public abstract class StrategyForPlan {
//抽象的围剿计划
public abstract void plan();
}
package P16_stategy;
/**
* A计划
*/
public class APlan extends StrategyForPlan {
@Override
public void plan() {
System.out.println("执行A计划");
}
}
package P16_stategy;
/**
* B计划
*/
public class BPlan extends StrategyForPlan {
@Override
public void plan() {
System.out.println("执行B计划");
}
}
package P16_stategy;
/**
* C计划
*/
public class CPlan extends StrategyForPlan {
@Override
public void plan() {
System.out.println("执行C计划");
}
}
package P16_stategy;
/**
* 测试类,上下文类
*/
public class ContextPlan {
private StrategyForPlan strategyForPlan;
public ContextPlan(StrategyForPlan strategyForPlan){
this.strategyForPlan=strategyForPlan;
}
public void actionPlan(){
strategyForPlan.plan();
}
public static void main(String[] args){
//制定出三种方案
StrategyForPlan aPlan=new APlan();
StrategyForPlan bPlan=new BPlan();
StrategyForPlan cPlan=new CPlan();
System.out.println("默认执行A计划");
//执行A计划
ContextPlan realPlan=new ContextPlan(aPlan);
realPlan.actionPlan();
System.out.println("情况有变需要执行B计划");
//情况有变需要执行B计划
realPlan=new ContextPlan(bPlan);//替换计划
realPlan.actionPlan();//执行计划
System.out.println("最终将贩毒团伙一网打尽。");
}
}

策略模式适用于某些特定需求的功能,就像我们百度地图上从一个地方到另一个地方的路线,有时间优先的,有价格优先的,还有路线最短的,都是能帮你到达终点的。。。
策略模式模式就为大家介绍到这里。代码设计模式
大家如果对其他设计模式有兴趣可以看看我之前的博客:
15责任链模式:
14命令模式:
13模板方法模式:
12享元模式:
11外观模式:
10桥梁模式:

9组合模式:
8适配器模式:
7装饰模式:
6代理模式:
创建型模式详解:
5原型模式:
4建造者模式:
3抽象工厂模式:
2工厂方法模式:
可以仔细对比一下工厂方法模式和抽象工厂模式,看看概念,看看类图,看看代码,就会明白了。
1单例模式:
java 23种设计模式介绍:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-85286-1.html
虽远必诛
但是他也推进了