Lab3-实验心得

选定的应用场景:航班管理、高铁车次管理、大学课表管理

面向可复用性和可维护性的设计:PlanningEntry

PlanningEntry的共性操作
1 位置操作:位置的设定、从固定计划项获取其位置
2 资源操作:资源的分配、从计划项获取资源名称
3 时间属性操作:时间分配、当前时间的获取、从计划项获取时间
局部共性特征的设计方案
1 位置设定在位置为空时可以进行位置分配
2 资源分配在资源为空时可以进行资源分配,如果资源不为空则不可以进行重新设置
3. 时间属性通过Calendar进行当前时间获取
在这里插入图片描述
面向各应用的PlanningEntry子类型设计(个性化特征的设计方案)
1.航线
可以通过两个时间(起飞时间与落地时间)、两个位置(起点与终点)、航线名称进行构造,在构造时资源不是必须的(可以后期进行分配)位置设定与获取:提供两个位置,在未起飞时可以进行分配获取位置时返回装有两个位置的List资源分配:在当前状态为waitting时可以进行分配,否则不予分配时间获取:返回两个时间的数组比较:若提供的航线的起飞时间早于当前航线的起飞时间则返回1,若晚于则返回-1,否则返回0
2.火车
通过两组时间(所有站的到站时间与所有站的离站时间)、一组地点(起点、终点与所有的经停站)、一组列车(可以没有,后期分配)、车次名称进行构造arrive(到站时间)与leave(离站时间)的第一项为起始站的出发时间,最后一项为终点站的到站时间,l(车站list)的第一项为起始站,最后一项为终点站,中间所有站按照到站时间依次分配比较:根据两个车次的起始站出发时间进行比较,如果当前车次出发时间靠前则返回1,靠后则返回-1,否则返回0
3.课程
可以通过两个时间(上课、下课时间),一个地点(教室),一组资源(一个或多个教师),课程名称进行构造比较:根据两个课程的上课时间进行比较,如果当前课程上课时间靠前则返回1,靠后则返回-1,否则返回0

面向复用的设计:R

1.航线
在这里插入图片描述
包括飞机的编号、机型号、座位数、使用时长可以通过Plane的方法获取、设置飞机的所有的数值
2.高铁
在这里插入图片描述
每节车厢是一个Train对象,包括车厢编号、类别、乘员数、生产年份可以通过Train对象的方法获取、设置车厢的所有的数值
3.课程
在这里插入图片描述
每个教师的性质包括姓名、身份证号、性别、职称可以通过Teacher对象的方法获取、设置教师的所有的数值

可复用API设计及Façade设计模式

检测一组计划项之间是否存在位置独占冲突
对一组计划项进行遍历,如果该计划项的位置可共享性是可共享则直接返回false(不存在位置冲突),否则进行两层循环遍历,依次比较每两个计划项是否存在时间重叠,如果存在时间重叠且位置相同则存在位置冲突
检测一组计划项之间是否存在资源独占冲突
对一组计划项进行遍历,如果该计划项的资源不可区分则直接返回false(不存在资源独占冲突),否则进行两层循环遍历,依次比较每两个计划项是否存在时间重叠,如果存在时间重叠且使用的资源相同则存在资源冲突
提取面向特定资源的前序计划项
对一组计划项的所有进行遍历,挑选出与指定资源相同的计划项,再将所有计划项按照开始时间进行排序,返回给定计划项的上一个计划项即可

Factory Method

以飞机为例
在这里插入图片描述
在工厂类中通过构造器构造PlaneEntry计划项在这里插入图片描述
在这里插入图片描述
在FligthScheduleApp中,添加计划项时可以直接用工厂方法进行添加。在读取按照语法读取文件时,也要通过工厂方法创建计划项

Iterator

同样以航线为例
在这里插入图片描述

在迭代器中可以判断是否还有下一个元素,以及返回下一个元素如果还有下一个元素则可以进行迭代,按照时间顺序依次输出所有的计划项,在Board上或App的计划项显示面板上进行展示

本次实验对学过的多种设计模式进行了实践,对于理论学习和实际编写代码还是存在很大差距的。对于iterator和parser表达式的应用还不是很熟练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值