strategy(tenth day)

来源:互联网 发布:淘宝保证金在哪里退 编辑:程序博客网 时间:2024/06/07 03:18

策略模式:   定义一系列的算法,把他们一个个封装起来,并且使它们可互相替换。


 


/** * 定义一系列的算法,把他们一个个封装起来,并且使它们可互相替换。 * @describe  * 抽象角色定义算法的 骨架 * * @time 2014-7-9 上午10:29:33 */public interface Strategy {public double calcPrice(double goodsPrice);}

public class LargeCustomerStrategy implements Strategy{@Overridepublic double calcPrice(double goodsPrice) {System.out.println("大客户折扣10%"); return goodsPrice*(1-0.1);}}

/** * 算法的具体实现 * @describe  *  * * @time 2014-7-9 下午04:40:18 */public class NormalCustomerStrategy implements Strategy{@Overridepublic double calcPrice(double goodsPrice) {System.out.println("对于新客户或者普通客户,没有折扣"); return goodsPrice;}}

public class OldCustomerStrategy implements Strategy{@Overridepublic double calcPrice(double goodsPrice) {System.out.println("对于老客户,折扣5%"); return goodsPrice*(1-0.05);}}

/** * 封装了变化部分(算法的实现) 用户只需要访问这个封装的角色就行了 * @describe  *  * * @time 2014-7-9 下午04:38:32 */public class Price {private Strategy strategy = null;public Price(Strategy strategy){this.strategy = strategy;}public double quote(double goodsPrice){return this.strategy.calcPrice(goodsPrice);}}

public class Client {public static void main(String[] args) {Strategy sty = new LargeCustomerStrategy();Price ctx = new Price(sty);double quote = ctx.quote(1000);System.out.println(quote);}}


0 0
原创粉丝点击