软件设计模式实验:状态-观察者+组合-观察者在在线书店与会议管理系统中的应用
版权申诉
5星 · 超过95%的资源 18 浏览量
更新于2024-08-09
7
收藏 2.88MB DOC 举报
在软件设计模式作业中,学生罗首峰针对2021秋季学期的课程进行了实验,主要涉及状态模式、观察者模式、组合模式和工厂方法模式的运用。以下是各个部分的详细解析:
1、状态模式与观察者模式
1.1 实验背景
该实验是模拟一个网上书店系统,用户通过购买图书积攒积分,根据积分等级享受不同的优惠。User类作为核心,拥有基本属性如用户名、等级和已付金额,以及操作如购买图书。不同会员级别(普通会员、银会员、黄金会员、钻石会员)定义了各自的优惠策略,并通过CalcRealAmount和ChangeCredit方法来计算实际价格和积分变动。在特定活动如双十一或周年庆时,系统通过观察者模式自动发送通知给会员。
1.2 模式应用
- 状态模式用于管理用户的不同积分等级状态,通过一系列状态类(如普通会员、高级会员状态)来表示和处理用户的当前状态。
- 观察者模式用于实现活动通知的功能,Subject(书店)对象作为发布者,当状态发生改变(如积分达到升级条件)时,通知Observer(会员)更新其状态和行为。
1.3 实现与结果
实验中提供了类图和代码示例,展示了如何设计状态类、抽象目标类、具体目标类(如顾客类和会员等级类)以及客户类(Client)。运行结果显示了模式的有效应用。
1.4 心得体会
罗首峰体会到设计模式在解决实际问题上的威力,尤其是观察者模式和状态模式的结合,使得代码结构更加清晰,提高了复用性和灵活性。
2、组合模式与观察者模式
2.1 会议管理系统
在这个模块中,会议管理系统通过组合模式来管理员工和部门的关系,行政人员可以分别向个体员工或整个部门发送通知。观察者模式同样在此场景中发挥作用,系统作为Subject,管理员的行为触发通知的发送,员工和部门作为Observer接收到通知。
总结:
本次实验涵盖了状态模式、观察者模式、组合模式和工厂方法模式的应用,通过实际案例展示了这些模式如何优化代码结构,提高系统的可维护性和扩展性。学生理解并实践了这些设计模式,体验到了它们在实际项目中的价值。
2015-05-05 上传
2010-05-20 上传
2022-05-24 上传
2022-01-07 上传
246 浏览量
118 浏览量
2022-03-08 上传
2023-05-16 上传
FGGIT
- 粉丝: 1w+
- 资源: 129
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析