【软件设计与体系结构】-策略设计模式

1. 实验内容

某电商系统,销售Sale类中包含销售项SaleItem对象的列表,SaleItem类包括商品名称、数量、单价等数据域。

现有的Sale类calculateTotalPrice ()方法计算总价,其遍历所有的SaleItem对象,通过累积每个SaleItem对象的数量×单价,求得总价。

但是目前系统要求促销活动时能灵活采用多种打折算法,例如打8折 ,或满200减50 等,请采用策略设计模式 对现有设计修改。

(提示:Sale类依赖于计算总价的接口,calculateTotalPrice ()方法委托给该接口计算总价,该接口的实现对象可由构造方法或setter方法注入Sale。 另外可使用配置文件中记录具体的计算总价实现类的类名,读配置文件后由java反射机制得到实例对象,然后注入)

2. 设计URL类图

3. 伪代码及运行截图

1)策略接口PriceCalculationStrategy

2)具体策略实现类Discount80Strategy、 Full200Minus50Strategy

3)商品项类 SaleItem

4)销售类 Sale

5 .) 客户测试类 Client

相关推荐
cspttty3 小时前
二本软件工程专业好就业吗?毕业后能做哪些岗位
大数据·软件工程
程序员天天困3 小时前
优雅记录操作日志:从注解到 SpEL 的全链路实践与开源方案对比
java·后端
战血石LoveYY3 小时前
Integer类型超限,导致数据异常
java·算法
CaffeinePro4 小时前
SOLID五大设计原则:重构优雅代码与架构的底层规范
设计模式·架构
乐观的Terry5 小时前
1、为什么要自己造发布系统
java·spring boot·后端·spring cloud·架构
饮茶三千5 小时前
电子保函模板编辑器实战二:HTML→FTL 编译转换的设计与实现
前端·vue.js·设计模式
Kel5 小时前
Node.js 本质:从全脉络视角理解运行时原理
javascript·设计模式·node.js
兰令水5 小时前
hot100【acm版】【2026.7.13打卡-java版本】
java·开发语言·数据结构·算法·leetcode·面试
名字还没想好☜5 小时前
用 Redis + Redisson 实现分布式锁:从踩坑到生产可用
java·redis·分布式·junit·分布式锁·redisson