java商城满减推部分商品_Java使⽤策略模式解决商场促销商
品问题⽰例
本⽂实例讲述了java使⽤策略模式解决商场促销商品问题。分享给⼤家供⼤家参考,具体如下:
⼀ 模式定义
策略模式:定义⼀系列的算法,将每⼀种算法封装起来并可以相互替换使⽤,策略模式让算法独⽴于使⽤它的客户应⽤⽽独⽴变化。
⼆ 模式举例
1 模式分析
我们借⽤商场促销商品来说明这⼀模式。
2 策略模式静态类图
3 代码⽰例
3.1 创建策略接⼝⼀istrategy
package com.demo.strategy;
/**
* 策略接⼝
*
* @author
*
*/
public interface istrategy {
/**
* 计算实际价格⽅法
*
* @param consumeprice
* 消费⾦额
* @return
*/
public double realprice(double consumeprice);
}
3.2 ⼋折促销策略⼀rebatestrategy
package com.demo.strategy;
/**
* 打⼋折商品促销策略
*
* @author
*
*/
public class rebatestrategy implements istrategy { private final double rate;
/**
* 构造⽅法设置打折率
*/
public rebatestrategy() {
this.rate = 0.8;
}
/**
* 计算实际价格⽅法
*
* @param consumeprice
* 消费⾦额
* @return
*/
public double realprice(double consumeprice) { return consumeprice * this.rate;
}
}
3.3 满1000减200促销策略⼀reducestrategy
package com.demo.strategy;
/**
* 满1000减200 商品促销策略
*
* @author
*
*/
public class reducestrategy implements istrategy { /**
* 计算实际价格⽅法
*
* @param consumeprice
* 消费⾦额
* @return
*/
public double realprice(double consumeprice) {
if (consumeprice >= 1000) {
return consumeprice - 200;
} else {
return consumeprice;
}
}
}
3.4 200以上部分打8折促销策略⼀promotionalstrategy package com.demo.strategy;
/**
* 满200,⾼于200部分打⼋折 商品促销策略
*
* @author
*/
public class promotionalstrategy implements istrategy { /**
* 计算实际价格⽅法
*
* @param consumeprice
* 消费⾦额
* @return
*/
public double realprice(double consumeprice) {
if (consumeprice > 200) {
return 200 + (consumeprice - 200) * 0.8;
} else {
return consumeprice;
}
}
}
3.5 创建上下⽂环境⼀context
package t;
import java.math.bigdecimal;
import com.demo.strategy.istrategy;
/**
* 上下⽂环境
*
* @author
*
*/
public class context {
/
/ 当前策略
private istrategy strategy;
// 设置当前策略
public void setstrategy(istrategy strategy) {
this.strategy = strategy;
// 使⽤策略计算价格
public double cul(double consumeprice) {
// 使⽤具体商品促销策略获得实际消费⾦额
double realprice = alprice(consumeprice); // 格式化保留⼩数点后1位,即:精确到⾓
bigdecimal bd = new bigdecimal(realprice);
bd = bd.setscale(1, und_down);
return bd.doublevalue();
}
}
3.6 消费者购物消费⼀client
bigdecimal格式化两位小数package com.demo;
import java.util.random;
/**
* 客户端应⽤程序
*
* @author
*
*/
public class client {
/**
* @param args
*/
public static void main(string[] args) {
// 创建上下问环境对象实例
// context context = new context();
// 随机数对象
random random = new random();
for (int i = 0; i < 10; i++) {
/
/ 产⽣随机数的⽅式判断使⽤何种促销策略
int x = int(3);
// 消费价格也是由随机数产⽣的(不能为0)
double consumeprice = 0;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。