设计模式入门之策略模式Strategy
2014-05-11 17:24
435 查看
//策略模式定义: //定义一些列算法,把他们一个个封装起来,并且使他们可互相交换。 //本模式使得算法可独立于使用它的客户而变化 //实例:对不同的客户给出不同的折扣价格,上代码 //策略接口 public class Strategy { public double calcPrice(double goodsPrice); } //普通用户价格算法 public class NormalCustomerStrategy implements Strategy { public double calcPrice(double goodsPrice) { System.out.println("新用户、普通用户,没有折扣"); return goodsPrice; } } //老用户用户价格算法 public class OldCustomerStrategy implements Strategy { public double calcPrice(double goodsPrice) { System.out.println("老用户95折"); return goodsPrice*(1-0.05); } } //大用户价格算法 public class LargeCustomerStrategy implements Strategy { public double calcPrice(double goodsPrice) { System.out.println("大用户9折"); return goodsPrice*(1-0.1); } } //上下文(环境),价格管理 public class Price { private Strategy strategy = null; public Price(Strategy strategy) { this.strategy = strategy; } public double calcPrice(double goodsPrice) { return this.strategy.calcPrice(goodsPrice); } } //测试 public class Client { Strategy strategy = new LargeCustomerStrategy(); Price ctx = new Price(strategy); ctx.calcPrice(1000); } //策略模式本质:封装算法 //优点:定义一系列算法,便于扩展;可以避免多重条件语句,更好的扩展性 //缺点:客户必须了解每种策略的不同;增加了对象数目
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 设计模式之创建型模式
- 介绍php设计模式中的工厂模式
- 面向对象设计模式的核心法则
- 常见的PHP五种设计模式小结
- 小议javascript 设计模式 推荐
- javascript 设计模式之单体模式 面向对象学习基础
- 最常用的12种设计模式小结
- php设计模式 Command(命令模式)
- php设计模式介绍之值对象模式第1/5页
- 设计模式之构建(Builder)模式 建造房子实例分析
- Javascript 设计模式(二) 闭包
- javascript学习笔记(九) js对象 设计模式
- Python设计模式之代理模式实例
- Python设计模式之观察者模式实例
- ASP.NET的适配器设计模式(Adapter)应用详解
- PHP设计模式之调解者模式的深入解析
- js如何实现设计模式中的模板方法