假设我有一个Task对象,使用Execute
方法。该方法具有一到几个步骤,每个步骤都要求用户点击“继续”按钮,例如,当调用Execute
时,任务告诉它的容器(在这种情况下为Windows窗体)显示介绍性消息,并等待按钮单击,然后继续执行步骤2,通知用户正在发生的事情和做一些工作。
我不希望控制器必须通过例如隐式地了解任务中的步骤。使用多个Execute方法调用Execute(Steps.ShowIntro)
,Execute(Steps.PerformTask)
等或明确调用,例如ExecuteIntro()
,ExecuteTask()
等
目前我正在使用阶段枚举来确定单击“继续”按钮时要执行的操作:
show phase 1 intro.
set current_phase = PhaseOne.
on continue_button click
switch current_phase
case PhaseOne:
show phase 1 'Now doing:' message.
execute phase 1 task.
show phase 2 intro.
set phase to PhaseTwo.
case PhaseTwo:
show phase 2 'Now doing:' message.
execute phase 2 task.
show phase 3 intro.
set phase to PhaseThree.
答案 0 :(得分:3)
为什么不简单地使用Execute方法实现任意数量的类作为步骤,并将这些类的实例放入队列中。
按“继续”,您将使用执行的另一个类实例并调用它。
class Task
method execute()
foreach task in queue execute task
method addSubTask( task )
add task to queue
class ShowIntroSubTask extends Task
class ExecuteIntroSubTask extends Task
答案 1 :(得分:0)
Mykola的回答听起来不错,但是如果您想要替代方案,请考虑传入ConfirmContinuation
回调,Execute
可以根据需要使用(例如,在步骤转换时)。如果你想保持抽象的东西,只需称它为NextStep
,并将语义留给容器。