策略模式的基本运用
2017-10-26 14:38
309 查看
购买商品后有三种优惠,根据不同情况选择不同的优惠措施。使用策略模式可以实现较好的封装,但仍有需要改进的地方。
/** * 现金收费抽象类 */ abstract class CashSuper{ public abstract double acceptCash(double money); } /** * 正常收费子类 */ class CashNormal extends CashSuper{ @Override public double acceptCash(double money) { return money; } } /** * 打折收费子类 */ class CashRebate extends CashSuper{ private double moneyRebate=1d; public CashRebate(double moneyRebate){ this.moneyRebate=moneyRebate; } @Override public double acceptCash(double money) { return money*moneyRebate; } } /** * 返利收费子类 */ class CashReturn extends CashSuper{ private double moneyCondition=0.0d;//返利条件 private double moneyReturn=0.0d; public CashReturn(double moneyCondition,double moneyReturn){ this.moneyCondition=moneyCondition; this.moneyReturn=moneyReturn; } @Override public double acceptCash(double money) { double result=money; //当前费用大于返利条件 if(money>=moneyCondition){ result=money-Math.floor(money/moneyCondition)*moneyReturn; } return result; } }
/** * 上下文 */ class CashContext{ CashSuper cs=null; public CashContext(String type){ switch (type){ case "正常收费": CashNormal cs0=new CashNormal(); cs=cs0; break; case "满300返100": CashReturn cr1=new CashReturn(300,100); cs=cr1; break; case "打八折": CashRebate cr2=new CashRebate(0.8); cs=cr2; break; } } public double GetResult(double money){ return cs.acceptCash(money); } }
/** * 客户端调用 */ public class Strategy { public static void main(String[] args){ CashContext csuper=new CashContext("正常收费"); double prices=csuper.GetResult(1000); CashContext csuper2=new CashContext("满减"); double prices2=csuper2.GetResult(1000); } }
相关文章推荐
- 策略模式基本应用Strategy Pattern
- 深入解析C++编程中对设计模式中的策略模式的运用
- ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)
- “第一次亲密接触”——iOS中策略模式初运用
- .NET 下运用策略模式
- AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222
- 简易运算(运用策略模式实现)
- .NET 下运用策略模式
- 简单工厂模式的基本运用
- 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
- OpenCV 2 学习笔记(10): 算法的基本设计模式<1>:策略模式(strategy pattern)
- Java设计模式——策略设计模式——接口的运用
- eclipse中debug模式的基本运用
- .NET 下运用策略模式(组合行为和实体的一种模式)
- “第一次亲密接触”——iOS中策略模式初运用
- 游戏项目中运用到的设计模式(二)...策略模式(strategy)(《重构-改善既有代码的设计》读后做)
- Ruby设计模式之策略模式一: 基本的策略模式
- IOS中策略模式初运用
- AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222