2009-05-21 6 views
3

У меня есть процесс что-то вроде процесса, предположим, что это так:Какой шаблон дизайна для этого?

  1. Подготовка
  2. Ешьте
    • Возьмите материал в бункер
    • зачистить стол

Теперь, что я хочу сделать, даже пользователь отменяет «Ешьте» ev я хочу, чтобы они «Очистили таблицу», то же самое относится к этапам «Подготовьте» и «Возьмите свой материал в корзину».

В настоящее время в моей реализации мне пришлось сделать несколько проверок, и иногда я заканчиваю так, как дважды называть «Очистить таблицу», и некоторые другие проблемы с ветвлением, когда я добавляю еще пару шагов.

Есть ли какой-либо четко определенный шаблон проектирования для решения таких потоков? (AFAIR был один, я просто не могу назвать его имя.)

+0

просто хлопайте детей вокруг ...... шутите !! :) – kenny

ответ

9

Это решается с State pattern. Если вы проверите диск, логика будет идти гладко.

+0

Это был тот, о котором я думал. Достаточно гибкий для рабочего процесса. Приветствия. –

2

В C# /. NET у нас есть модель IDisposable. Я уверен, что вы могли бы реализовать что-то подобное на другом языке, независимо от того, имеет ли он сборщик мусора (хотя реализация будет немного отличаться).

Что касается аспекта рабочего процесса, я просто буду следовать шаблону проектирования веб-сервисов в WCF (то есть Begin и Cancel методах). Если вы не считаете это излишним для своих обстоятельств, Windows Workflow Foundation может быть лучшим способом.

+0

на самом деле IDisposable - неплохая идея, в настоящее время я сохранил копию объекта даже после последнего шага, но я мог бы реорганизовать его. –

3

Если вы работаете в C++: Resource Acquisition is Initialization.

Эта проблема вообще не была решена хорошо на языках без какой-детерминированной финализации (C#, Java и т.д.)

1

State Pattern my firend - это то, что сделает эту работу концом.

Смежные вопросы