策略访问模式

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

/**
 * 策略访问模式 接口定义      
 * @author zhangjianbin
 *
 */
public interface Strategy {
    double getPrice(double standprice);
}
/**
 * 新客户小量购买策略
 *
 * @author zhangjianbin
 *
 */
public class NewCoustomerfewStrategy implements Strategy{
    @Override
    public double getPrice(double standprice) {
        System.err.println("新客户小量购买算法:不打折");
        return standprice;
    }

}
/**
 * 新客户大量购买策略
 *
 * @author zhangjianbin
 *
 */
public class NewCoustomerManyStrategy implements Strategy{
    @Override
    public double getPrice(double standprice) {
        System.err.println(" 新客户大量购买算法:打9.5折");
        return standprice*0.95;
    }

}
/**
 * 老客户小量购买策略
 *
 * @author zhangjianbin
 *
 */
public class OldCoustomerfewStrategy implements Strategy{
    @Override
    public double getPrice(double standprice) {
        System.err.println("老客户小量购买算法:打9折");
        return standprice*0.9;
    }

}
/**
 * 老客户大量购买策略
 *
 * @author zhangjianbin
 *
 */
public class OldCoustomerManyStrategy implements Strategy{
    @Override
    public double getPrice(double standprice) {
        System.err.println("老客户老客户大量购买算法:打8.5折");
        return standprice*0.9;
    }

}
/**
 * 管理策略算法
 *  负责与俱类的策略类交互
 *  
 *  优点:
 *      俱体的算法和直接与客户端之间的调用分离了
 *      使算法可以独立于客户端变化
 * @author zhangjianbin
 *
 */
public class Context {

    private Strategy strategy;

    public Context(Strategy strategy) {
        super();
        this.strategy = strategy;
    }

    public void pringPrice(double standprice){
        System.err.println("策略算法报价:"+strategy.getPrice(standprice));
    }

}
public class Client {

    public static void main(String[] args) {
        /**
         * 采用老客户大量购买策略算法
         */
        Strategy strategy = new OldCoustomerManyStrategy();

        /**
         * 管理算法对象  
         *      根据注入的算法,自动进行打折计算
         */
        Context context = new Context(strategy);


        /**
         * 打折算法计算后的价格
         *          传入原价
         */
        context.pringPrice(8220);

        /**
         * 结果:
         * 老客户老客户大量购买算法:打8.5折
         *  策略算法报价:7398.0
         */

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值