设计模式-行为型模式总结实例(二)(二)

2014-11-24 03:22:13 · 作者: · 浏览: 1
y(new FullLessDiscount(100,20)); System.out.println("现价:"+context.getDiscountPrice(122)); } } interface DiscountStrategy{ BigDecimal getDiscount(BigDecimal price); } //会员 class VipDiscount implements DiscountStrategy{ public VipDiscount(double base) { this.base=base; } //会员的基数 private double base; public BigDecimal getDiscount(BigDecimal price) { return price.multiply(new BigDecimal(base)); } } //满减 class FullLessDiscount implements DiscountStrategy{ public FullLessDiscount(double full,double less) { this.full=full; this.less=less; } //会员的基数 private double full; private double less; public BigDecimal getDiscount(BigDecimal price) { if (price.compareTo(new BigDecimal(full))<0) { return price; } return price.subtract(new BigDecimal(less)); } } class DiscountContext{ DiscountStrategy strategy; public DiscountContext(DiscountStrategy strategy) { this.strategy=strategy; } public DiscountStrategy getStrategy() { return strategy; } public void setStrategy(DiscountStrategy strategy) { this.strategy = strategy; } public double getDiscountPrice(double price){ if (strategy==null) { strategy=new VipDiscount(1); } return strategy.getDiscount(new BigDecimal(price)).doubleva lue(); } }


策略模式和状态模式很相似,但状态模式侧重状态方面,一般不会接受新的状态对象,即系统已经定义足够的状态

策略侧重不同的行为的改变在统一的接口下,强调多态下面行为的执行过程,处理过程,可以从用户那里接受参数,只要用户提供的策略符合接口