设计模式之策略模式
来源:互联网 发布:4.5mm铅弹可淘宝 编辑:程序博客网 时间:2024/06/05 05:12
- 策略模式
- 策略模式的实现
- 代码如下
- 父类CashSuper
- 子类CashNormalCashRebateCashReturn
- 策略配置类CashContext
问题:对商场营销模式进行封装(正常,打折,返利)
策略模式
- 策略模式是对算法家族的封装,使得算法的变化,不会影响使用的算法。
- 如果说简单工厂模式是对类进行的封装,那策略模式,就是对行为进行了封装。
- 商场的营销场景:不同促销活动,其实质是同一类计费算法。
策略模式的实现
策略模式和简单工厂模式非常相似,其区别在与Factory类和StrategyContext类:
1. 工厂模式解决的是对象创建问题,所以Factory类需要返回一个对象;
2. 而策略模式是对行为的封装,关注的是行为导致的结果,所以StrategyContext类只需返回结果;
3. 工厂模式的核心是,==返回子类对象的静态方法==;
3. 策略模式中的StrategyContext类封装了一个父类引用,和调用父类的方法(该方法也是子类实现的方法);
代码如下
父类:CashSuper
public CashSuper{ public abstract double acceptCash(double money);}
子类:CashNormal、CashRebate、CashReturn
/**************************/public CashNormal{ public CahsNormal() { } public double acceptCash(double money) { return money; }}/**************************/public CashRebate{ private double moneyRebate =.8d; public CashRebate() { } public double accpetCash(double money) { return money*moneyRebate; } /*****getter and setter...*****/}/**************************/public CashReturn{ private double moneyCondition = 300d; private double moneyReturn = 100d; public CashReturn() { } public double acceptCash(double money) { if(money >= moneyCondition) { return money - Math.floor(money/moneyCondition)*moneyReturn; } return money; } /*****getter and setter...*****/}
策略配置类:CashContext
pubic CashContext{ private CashSuper cs; //利用反射避免了if或者switch逻辑 public CashContext(String className) { cs= Class.forName(className).newInstence(); } public getCash(double money) { return cs.acceptCash(money); } /*****getter and setter...*****/}
阅读全文
0 0
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- Nodejs——Eclipse中运行调试Nodejs
- 数据库中的事务,隔离级别
- win10 jdk安装
- Python(基础)第三天
- Android编程权威指南(第二版)— 第13章挑战练习-13.6
- 设计模式之策略模式
- 十种排序算法总结
- java 虚拟机系列文章5--垃圾收集器及GC参数
- 6.mybatis逆向工程
- 发送HTTP请求,HttpPost
- 3D 360度旋转app 重力感应 用户交互
- And_Android Studio取消与SVN的关联/找不到Share Project(Subversion)
- 01迷宫
- 关于调试