您的位置:首页 > 其它

设计模式学习之策略模式:报价管理系统

2015-05-30 19:11 465 查看
一个报价管理系统

在一些CRM(客户关系管理)系统中,会有一个单独的报价管理模块,处理复杂的报价功能

普通客户:全价

老客户:根据年限,给予折扣

大客户:根据累计消费,给予折扣

客户购买量:对于新老客户都适用

报价人员职位高低:

如何实现????



一个支付策略的接口

package com.cmc;
//一个报价接口类,提供报价的接口,传入的参数为钱数
public interface OfferSuper {
public abstract double offerCash(double money);
}


三种支付方式分别实现上面的接口
大客户支付策略:

package com.cmc;
//大客户类,实现了报价接口并重写了支付方法
public class OfferLargeCus implements OfferSuper {

public double offerCash(double money) {
// TODO Auto-generated method stub
System.out.println("对于大客户,统一折扣10%");
return money*0.9;
}
}


普通客户支付策略:

package com.cmc;
//普通客户类,实现了报价接口并重写了报价方法
public class OfferNormal implements OfferSuper {

public double offerCash(double money) {
System.out.println("对于新客户或者是普通客户,没有折扣");
return money;
}

}
老客户支付策略:

package com.cmc;
//老客户类,实现了报价接口并重写了报价方法
public class OfferOldCus implements OfferSuper{

public double offerCash(double money) {
// TODO Auto-generated method stub
System.out.println("对于老客户,统一折扣5%");
return money*0.095;
}
}


客户类,根据传入的支付策略实现不同的报价:

package com.cmc;

public class Custom {
private OfferSuper os;
public Custom(OfferSuper offersuper){
this.os = offersuper;
}
public double GetResult(double money){
return os.offerCash(money);
}
}
客户端测试一下:

package com.cmc;
public class start {
public static void main(String[] args) {
OfferLargeCus olc = new OfferLargeCus();//创建一个老客户的报价策略
Custom cus = new Custom(olc);//把上面的报价策略传入到custom中
System.out.print(cus.GetResult(1000));根据实际价格得到报价
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: