设计模式心得:策略模式 (strategy pattern)
来源:互联网 发布:内向者适合做淘宝吗 编辑:程序博客网 时间:2024/05/28 15:03
Strategy模式: stragegy可以是任意的方法,如shopping cart中算discount, 算sum的方法,或是汽车的启动方法,或是鸭子飞的方法。 最终要解决的问题是:在这些方法对于不同对象实现不一致时,应该如何设计类。 比如,算discount, category 1的discount是5%, category 2是10% + $5,等等.
通过这种方法,可以随时添加/更改策略 (写其他实现CalculateDiscount的类),随时添加Item,或是更改item的具体计价方法。
具体实现,将方法抽离出来成为接口, 如CalculateDiscount interface, 有若干个实现
public class Category1Discount implements CalculateDiscount {public double discount(int price) {return 0.05 * price;}}
public class Category2Discount implements CalculateDiscount {public double discount(int price) {return 0.1 * price + 10;}}
不同的item组装不同的discount方法:
public class Item { int price; double findFinalPrice() {return calculator.discount(price);} CalculateDiscount calculator; void setCalculator(CalculateDiscount newCalculator) { calculator = newCalculator;} //some other methods}
item1 实现:
public class Item1 extends Item {Item1(int _price) {price = _price;calculator = new Category1Discount();}}
通过这种方法,可以随时添加/更改策略 (写其他实现CalculateDiscount的类),随时添加Item,或是更改item的具体计价方法。
核心内容,面向接口编程,多实现多组合,少继承。
附图一张:
0 0
- 设计模式心得:策略模式 (strategy pattern)
- 设计模式 - Strategy Pattern(策略模式)
- 设计模式 - Strategy Pattern(策略模式)
- 设计模式20:Strategy Pattern (策略模式)
- 设计模式-策略模式(Strategy Pattern)
- 设计模式:策略模式 strategy pattern
- java设计模式---Strategy Pattern---策略模式
- 设计模式之策略模式(Strategy Pattern)
- [设计模式]Strategy Pattern(策略模式).(1)
- 设计模式-策略模式(Strategy Pattern)
- c++设计模式:策略模式(Strategy Pattern)
- 设计模式学习--策略模式(Strategy Pattern)
- 设计模式原来如此-策略模式(Strategy Pattern)
- 设计模式-策略模式 Strategy Pattern
- 设计模式 - 策略模式(Strategy Pattern) 详解
- 设计模式 - 策略模式(Strategy Pattern) 详解
- 设计模式-策略模式(strategy pattern)
- 设计模式学习--策略模式(Strategy Pattern)
- 邮件标签
- 一个横幅广告
- 校企结合培养创新型生物制药高技能人才
- mkinitramfs脚本文件分析,位置/usr/sbin/mkinitramfs
- iOS开发之手势篇
- 设计模式心得:策略模式 (strategy pattern)
- 在Ubuntu上安裝Eclipse
- poj 1860 最短路
- 1.25
- 一个关于家具的横幅广告
- 抓包神器fiddler
- UIScrollView的重要属性总结,以及UIScrollViewDelegate协议的使用
- 《时间管理》读后感
- POJ 3208 Apocalypse Someday(数位DP)