设计模式_2_策略模式
2016-11-15 17:00
351 查看
1.策略模式(Strategy)
它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。2.UML类图
3.代码实现
abstract class CashSuper { //算法方法 public abstract double acceptCash(double money); }
public class CashReturn extends CashSuper { private double moneyCondition = 0.0d; private double moneyReturn = 0.0d; public CashReturn(String moneyCondition,String moneyReturn){ this.moneyCondition = Double.parseDouble(moneyCondition); this.moneyReturn = Double.parseDouble(moneyReturn); } @Override public double acceptCash(double money) { // TODO Auto-generated method stub double result = money; if (money >= moneyCondition) { result = money - Math.floor(money / moneyCondition) * moneyReturn; } return result; } }
public class CashNormal extends CashSuper { @Override public double acceptCash(double money) { return money; } }
public class CashRebate extends CashSuper { private double moneyRebate = 1d; public CashRebate(String moneyRebate){ this.moneyRebate = Double.parseDouble(moneyRebate); } @Override public double acceptCash(double money) { return money * moneyRebate; } }
public class CashContext { CashSuper cs = null; public CashContext(String type){ char charType = type.charAt(0); //char charType = (char)type; switch (charType){ case 'n': cs = new CashNormal(); break; case 'r': CashReturn cr1 = new CashReturn("300","100"); cs = cr1; break; case '8': CashRebate cr2 = new CashRebate("0.8"); cs = cr2; break; } } public double getResult(double money){ return cs.acceptCash(money); } }
public class strategy { double total = 0.0d; public static void main(String[] args) { CashContext cc = new CashContext('r'); double totals = 0d; totals = cc.getResult(100 * 300); total = total + totals; } }
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)