
吉林大学软件学院卓班第三次设计模式练习
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
简介:本次吉林大学软件学院卓班活动为第三次设计模式实践练习,旨在通过小组合作的方式加深学生对设计模式的理解和应用能力。
练习03:创建型+结构型+其它(基于step0_src中的代码)
1. 当前代码大量使用了cout,这限制了程序只能输出到控制台屏幕,并且大部分类只能在控制台程序中复用。为了提高Menu等类的复用性并适应多种输出设备,如流设备、打印机和窗口等,请根据给出的类图设计实现相关类(PrinterDevice 和 WindowDevice 类暂不实现),同时修改原代码以保持输出结果不变。
2. 在显示各菜单时,希望在左侧添加一些空格或制表符使界面更加美观。请使用装饰模式扩展第1题中的类来达到这一目的。
3. 考虑到打印机设备的实际情况,在没有本地打印机的情况下,系统可能会连接网络上的多台打印设备。当需要打印文档时,由系统根据情况选择一台合适的进行打印操作。为了保持OutDevice等类接口的一致性,并让用户在使用远程和本地打印功能时感觉相同,请利用代理模式给出相关部分的类图并简要说明。
4. 希望在处理各菜单(Menu)的过程中增加一些额外的操作,例如显示一个头部信息或循环播放背景音乐。当离开某个菜单时则停止播放音乐。通过将Menu中的Process方法声明为虚函数,并复用现有的各个Menu实现新增功能,请使用装饰模式扩展代码以确保每次进入和退出菜单时都能自动处理这些操作。
5. 添加Player类作为演示,可以设定2-3个玩家角色:如第1号是HumanPlayer;第2、3号是AutoPlayer。当用户选择MainMenu中的Play选项后,各个玩家将依次进行游戏回合。对于每一轮次:
- 当轮到AutoPlayer时, 显示当前地图然后转交给下一个player;
- 轮到HumanPlayer时,则显示一个包含Go…(继续)、Load、Save和返回主菜单等选项的PlayMenu界面。
请完成上述功能实现,并进行相应代码修改,包括将MainMenu中的子菜单SaveMenu移动至PlayMenu下;调整LoadMenu的功能,在用户选择返回时不直接回到MainMenu而是执行MainMenue的Play流程。
全部评论 (0)


