26种设计模式之策略模式
2017-03-13 17:32
316 查看
策略模式是对算法的封装,让算法可以互相替换,算法的替换不影响客户端的使用
比如以商场折扣的为例,可能是打折,也有可能是返现,我们要封装算法进行互相替换抽象的策略类
package com.lizhenbo.strategy; /** * 抽象的算法策略,所有的具体算法都必须继承该抽象类 * @author LIZHENBO */ public abstract class PriceStrategy { public abstract double getPrice(double totalPrice); }
正常收费的算法策略
package com.lizhenbo.strategy; /** * 正常收费的算法类 * @author LIZHENBO * */ public class PriceNormal extends PriceStrategy { @Override public double getPrice(double totalPrice) { return totalPrice; } }
打折收费的算法策略
package com.lizhenbo.strategy; /** * 打折收费的算法类 * @author LIZHENBO * */ public class PriceDiscount extends PriceStrategy { @Override public double getPrice(double totalPrice) { return totalPrice*0.8; } }
返现收费的算法策略
package com.lizhenbo.strategy; /** * 返现收费的算法类 * @author LIZHENBO * */ public class PriceReturn extends PriceStrategy { @Override public double getPrice(double totalPrice) { if(totalPrice>=100){ totalPrice=totalPrice-20; } return totalPrice; } }
维持有一个算法策略
package com.lizhenbo.strategy; /** * 维持有一个算法策略 * @author LIZHENBO */ public class PriceContext { //维持有一个算法策略 private PriceStrategy priceStrategy; //在构造方法中,初始化算法策略 public PriceContext(PriceStrategy priceStrategy){ this.priceStrategy=priceStrategy; } //使用算法策略 public double getprice(double totalPrice){ return priceStrategy.getPrice(totalPrice); } }
测试类
package com.lizhenbo.strategy; import java.util.Scanner; public class Test { public static void main(String[] args) { //总价格 double totalPrice=100; //定义一个返现的算法策略 PriceStrategy priceStrategy=new PriceReturn(); //传入算法策略 PriceContext priceContext=new PriceContext(priceStrategy); //计算折扣后的价格 double getprice = priceContext.getprice(totalPrice); //输出 System.out.println("折扣后的价格是:"+getprice); } }
输出结果:
折扣后的价格是:80.0
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)