
吉林大学软件学院卓越班设计模式第二次练习
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本课程为吉林大学软件学院卓越班开设的设计模式系列教学活动之一,旨在通过实践练习深化学生对设计模式的理解与应用能力。第二次练习将聚焦于具体案例分析和团队项目合作,进一步提升学员的软件开发技巧及协作精神。
练习02 创建型+结构型+其它(以fromsrc目录中的代码为基础)
1. 在game类维护着curMenu对象,在运行期间仅有一个实例存在。而MenuMgr作为所有menu的管理器,可以负责管理curMenu。请将curMenu从Game类中移至MenuMgr中,并确保程序功能不变。
2. 同上题,请建立MapMgr类并将curMap从Game类移到MapMgr中以保持运行结果一致。
3. 查看Map.h文件中的Block组织形式为二维数组,实际上Block的布局可以多样。请使用桥接模式分离接口和实现,同时将读取/添加Block的方式改为线性索引方式。
- MapImp类可如下设计:(当需要不同的实现时,从该类派生即可)
- 既然Map不再记录二维位置信息,则让Block自行管理其坐标。请完成相关代码修改以保持程序功能不变。
4. 目前地图布局由二维数组表示,表明相邻非空Block是相通的而不同行或列中的则不然。
实际上,可以有其它方式来描述地图结构,例如如下数据表展示的方式:
类型 序号 行 列 LEFT RIGHT UP DOWN
A 1 0 0 2 6
B 6 1 0 ...
若希望每个Block“知道”其相邻的各Block,请扩展MapDirector、MapBuilder和Block类,改写MapMgr中的createMap函数以支持新布局方式并正确显示地图。
5. 回看3中所设计的MapImp类:请问是否使用了适配器模式?如果确实如此,则说明它适应了什么,并讨论采用类适配器模式的可能性。如果不适用该模式,解释原因。
全部评论 (0)


