需求描述
某快餐品牌推出了它独家的外卖应用,用户可以在手机上直接下单。该应用会根据用户选择的菜品(Item)、数量(Count)和优惠方式(Promotion)进行计算,告诉用户需要支付的金额(Charge)。
优惠活动有多种形式。假设用户一次只能使用一种优惠,那么使用哪种优惠省钱最多就会是一个让用户头疼的问题。所以该外卖应用为了方便用户,在用户下单时,会自动选择最优惠的方式并计算出最终金额让用户确认。
我们需要实现一个名为bestCharge
的函数,它能够接收用户选择的菜品和数量(以特定格式呈现)作为输入,然后返回计算后的汇总信息。
已知:
- 该店的菜品每一个都有一个唯一的id
- 当前的优惠方式有:
- 满30减6元
- 指定菜品(黄焖鸡、凉皮)半价
- 除菜品外没有其它收费(如送餐费、餐盒费等)
- 如果两种优惠方式省钱一样多,则使用前一种优惠方式
输入样例
["ITEM0001 x 1", "ITEM0013 x 2", "ITEM0022 x 1"]
输出样例
============= 订餐明细 =============
黄焖鸡 x 1 = 18元
肉夹馍 x 2 = 12元
凉皮 x 1 = 8元
-----------------------------------
使用优惠:
指定菜品半价(黄焖鸡,凉皮),省13元
-----------------------------------
总计:25元
===================================
使用另一种优惠的样例
输入:
["ITEM0013 x 4", "ITEM0022 x 1"]
输出:
============= 订餐明细 =============
肉夹馍 x 4 = 24元
凉皮 x 1 = 8元
-----------------------------------
使用优惠:
满30减6元,省6元
-----------------------------------
总计:26元
===================================
如果没有优惠可享受
输入:
["ITEM0013 x 4"]
输出:
============= 订餐明细 =============
肉夹馍 x 4 = 24元
-----------------------------------
总计:24元
===================================
要求
- 用流程图或Tasking图简要画出设计思路,并给出设计理由,说明亮点
- 代码整洁、函数粒度合适、命名有意义,注意代码规范
- 程序可读性、鲁棒性、可测性、可扩展性要高,欢迎使用各种设计模式玩代码
- 有单元测试覆盖更佳