设计模式学习之策略模式:报价管理系统
2015-05-30 19:11
465 查看
一个报价管理系统
在一些CRM(客户关系管理)系统中,会有一个单独的报价管理模块,处理复杂的报价功能
普通客户:全价
老客户:根据年限,给予折扣
大客户:根据累计消费,给予折扣
客户购买量:对于新老客户都适用
报价人员职位高低:
如何实现????
一个支付策略的接口
三种支付方式分别实现上面的接口
大客户支付策略:
普通客户支付策略:
客户类,根据传入的支付策略实现不同的报价:
在一些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));根据实际价格得到报价 } }
相关文章推荐
- hough圆检测
- ISCC-BASIC-50-easy?
- mysql注意事项
- strlen 与 sizeof的区别
- 【Flume】Rpc sink XX closing Rpc client:NettyAvroRpcClient {xx} …… Failed to send events 问题解决
- TCP连接状态详解
- 软件工程第五次作业
- A
- Housse Robber II | leetcode
- JS 屏蔽键盘与鼠标事件
- 如何将3DSMAX中模型缩小1000倍,导入到CityEngine中
- 读浅墨博客 十四 笔记
- 06-图1. List Components (25) (邻接表实现)
- JAVA 动态代理与AOP编程(面向切面编程)
- Arduuino复合运算符+Arduino基础~~~
- hdu 5248(二分)
- 浏览器原理与内存泄漏
- Python调用Matlab2014b引擎
- 关于detours的用法
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务