码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式学习之策略模式

时间:2015-05-31 09:34:19      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:设计模式   策略模式   

一个报价管理系统


在一些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));根据实际价格得到报价
	}

}




设计模式学习之策略模式

标签:设计模式   策略模式   

原文地址:http://blog.csdn.net/u014293306/article/details/46277247

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!