Какой шаблон проектирования лучше всего использовать для управления последовательностью шагов?

У меня есть инструмент winform, который взаимодействует с оборудованием через последовательный порт.

Последовательный порт используется для отправки команд на оборудование, которое будет подтверждать команды и иногда возвращать данные.

Чтобы выполнить задачу, несколько команд необходимо отправить на оборудование в определенном порядке.

Я успешно реализовал инструмент, используя оператор switch для управления отправкой команд. Однако, хотя это работает, я не могу избавиться от мысли, что есть лучший, более объектно-ориентированный способ сделать это - есть ли?

Текущая реализация приведена ниже:

Каждый случай - это команда, которую нужно отправить на оборудование . Отправить методу передается метод для вызова и идентификатор следующего шага, который будет возвращен, если команда отправлена ​​успешно.

  • Инструмент отправит команду запуска сеанса на оборудование.
  • Оборудование подтверждает команду.
  • Инструмент отправляет команду установки направления на оборудование.
  • Аппаратные средства подтверждают команду.

и т. Д.

MessageID nextStep = MessageID.IMS;

while (nextStep != MessageID.Stop)
{
    switch (nextStep)
    {
        case MessageID.ISS:
            nextStep = Send( new ISS_StartSession(), MessageID.IE386);
            RaiseProgressEvent(10); //percentage complete
            break;

        case MessageID.IE386:
            nextStep = Send( new IE386_SetDirection(Direction.BOTH), MessageID.IE378);
            RaiseProgressEvent(20);
            break;

       //etc

       case MessageID.Error:
            HandleError(); //abort task if necessary
            break;
    }
 }

Есть ли лучший способ сделать это?

Есть ли хорошо известный шаблон проектирования, на который мне следует обратить внимание?

6
задан Kildareflare 20 January 2011 в 14:09
поделиться