假设我有一个带有 Execute
方法的任务对象。此方法具有一到多个步骤,每个步骤都需要用户单击“继续”按钮,例如当调用 Execute 时,任务会告诉其容器(本例中为 Windows 窗体)显示介绍性消息,并等待按钮单击,然后继续执行步骤 2,通知用户正在执行的操作正在发生并执行一些工作。
我不希望 Controller 必须知道任务中的步骤,无论是隐式的,例如通过调用 Execute(Steps.ShowIntro)
、Execute(Steps.PerformTask)
等或显式调用多个 Execute 方法,例如ExecuteIntro()
、ExecuteTask()
等
目前,我正在使用 Phase 枚举来确定单击“Continue”按钮时要执行的操作:
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.
最佳答案
为什么不简单地使用 Execute 方法实现与步骤一样多的类,并将这些类的实例放入队列中。
通过按“继续”,您将使用 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
关于workflow - 如何将控制权交给调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/685896/