一、场景问题
某电影院为了提高电影票的售卖量,决定根据不同的用户群体设置不同的票价折扣策略
- 成年票:9折优惠
- 学生票:半价优惠
- 儿童票:票价大于等于10元情况下直降10元,否则8折优惠
请设计票价的计算程序。
二、解决方案
1、传统解决方案
1.1、解决思路
根据不同的用户类型进行不同的票价计算,实现起来也比较简单
-
代码实现
public class PriceFactory { /** * 票价计算 * * @param originalPrice 原价 * @param type 用户类型 * @return double * @author xianzilei **/ public static double getPrice(double originalPrice, String type) { if ("adult".equals(type)) { return originalPrice * 0.9; } else if ("student".equals(type)) { return originalPrice * 0.5; } else if ("children".equals(type)) { return originalPrice >= 10 ? originalPrice - 10 : originalPrice * 0.8; } else { throw new RuntimeException("不支持的计算类型"); } } }
-
客户端测试
public static void main(String[] args) { double originalPrice = 30.00; double adultPrice = PriceFactory.getPrice(originalPrice, "adult"); System.out.println("成人票价