Скажем, у меня есть объект Task с методом Execute
. Этот метод состоит из одного-нескольких шагов, каждый из которых требует от пользователя нажатия кнопки «Продолжить», например, когда вызывается Execute
, Задача указывает своему контейнеру (в данном случае, форме Windows) отобразить вводное сообщение и ждать нажатия кнопки, прежде чем перейти к шагу 2, уведомив пользователя о том, что происходит, и выполнив некоторые действия. работа.
Я не хочу, чтобы контроллер знал о шагах в задаче, неявно, например, через. вызов Execute(Steps.ShowIntro)
, Execute(Steps.PerformTask)
и т. д. или явно, с более чем одним методом Execute, например, ExecuteIntro()
, ExecuteTask()
и т. Д.
В настоящее время я использую перечисление Phase, чтобы определить, какое действие необходимо выполнить при нажатии кнопки «Продолжить»:
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.