设计模式------策略模式
2017-01-12 15:56
197 查看
策略模式:
又叫算法簇模式,算法也是一种策略;它定义了不同的算法族,并且 相互之间可以替换;
设计原则:
把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。
应用例子:
超市收银员收钱,有的商品打折(5折、7折、8折、9折),有的满1000减200;后来过两天到了一个节日,增加活动:满500送100积分;
先上一个策略模式的实例框架:
public interface Strategy {
public void operate(); //每类活动都是一种可计算的策略。
}
创建具体的策略对象:
public class DaZheLei implements Strategy {
public void operate() {
System.out.println("给商品打折!!!");
}
}
public class ManJian implements Strategy {
public void operate() {
System.out.println("满1000减200!!!");
}
}
若增加满500送100积分的活动,得在这加个ManSong类;
创建策略类将策略对象加载进去:
public class Context{
Strategy strategy;
public Context(Strategy strategy){
this.strategy=strategy;
}
public void ContextOperate() {
strategy.operate();
}
}
客户端代码:
public class Manipulate{
Context cc=null;
switch(cbxType.SelectItem.ToString()){
case "打折类":
cc=new Context(new DaZhe());
cc.ContextOperate();
break;
case "满1000减200":
cc=new Context(new ManJian);
cc.ContextOperate();
break;
增加 case "满500送100积分":
... ...
}
... ...
}
又叫算法簇模式,算法也是一种策略;它定义了不同的算法族,并且 相互之间可以替换;
设计原则:
把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。
应用例子:
超市收银员收钱,有的商品打折(5折、7折、8折、9折),有的满1000减200;后来过两天到了一个节日,增加活动:满500送100积分;
先上一个策略模式的实例框架:
public interface Strategy {
public void operate(); //每类活动都是一种可计算的策略。
}
创建具体的策略对象:
public class DaZheLei implements Strategy {
public void operate() {
System.out.println("给商品打折!!!");
}
}
public class ManJian implements Strategy {
public void operate() {
System.out.println("满1000减200!!!");
}
}
若增加满500送100积分的活动,得在这加个ManSong类;
创建策略类将策略对象加载进去:
public class Context{
Strategy strategy;
public Context(Strategy strategy){
this.strategy=strategy;
}
public void ContextOperate() {
strategy.operate();
}
}
客户端代码:
public class Manipulate{
Context cc=null;
switch(cbxType.SelectItem.ToString()){
case "打折类":
cc=new Context(new DaZhe());
cc.ContextOperate();
break;
case "满1000减200":
cc=new Context(new ManJian);
cc.ContextOperate();
break;
增加 case "满500送100积分":
... ...
}
... ...
}
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)