lab3中的状态设计模式
在软件构造lab3中计划项有各种状态,实验要求中规定
PlanningEntry 及其子类型需要记录计划项实体的当前“状态”。
请使用 state 设计模式来完成该任务。请自行思考设计方案。
状态就是最小的单元,当满足某种条件的时候,状态就会发生改变。在学习时那个视频使用了糖果机来举例,每个状态都有着对应的动作,比如投币,返回币,掉落等等,有的动作是自发的有的动作是非自发的连锁,在状态模式中,State接口中包含所有子状态能执行的动作,最后传给糖果机进行调用。
回到本实验中,计划项都有5、6个状态(根据是否可被阻塞添加blocked),行为共有如下5个,分别为分配,运行,阻塞,取消,终止——其中运行,阻塞,终止都是随着时间关系自动执行。
因此,state类中存放各种接口
有相应操作的切换为响应状态,无操作则不做改变,以RunningState为例,只有阻塞和终止操作能够响应,其他操作响应为空,不做任何操作。
回到commonplanningentry中,首先初始化各种状态,并将自身作为参数传递进去;然后将状态改为waitting,因为默认未分配资源时都是等待状态。
测试通过