Звучит как ситуация состояния конечного автомата, где шаги являются вашими объектами состояния и где каждое состояние может иметь несколько переходов выхода на основе условий (таких как параметры в настоящее время). Затем государство будет стоять за C в MVC.
Обсуждение шаблона можно найти здесь with a focus on game programming с другими примерами.
Шаблон состояния, по существу, позволит вам создать граф и, что более важно, разрешить каждому положению графа, которому будет присвоено поведение, приведет к тому, что кромка будет соблюдаться.
так что в вашем случае граф может быть определен в этом составили схему я просто придумал, как:
[state] => [transition-to] (condition)
1 => 3 (if opt_go_to_3 == true)
1 => 2
2 => 3
2 => 5 (if some_other_optioon == true)
2 => 3
... (etc)
Теперь ваш код красиво объективируется, но все еще довольно гибкий. Когда дело доходит до поведения, вам нужно работать на основе условия.
Теперь, если этот объект состояния используется в качестве контроллера в вашей схеме MVC, он на самом деле все хорошо сочетается.
Текущее состояние вашего конечного автомата может создавать новые представления при вводе на основе некоторых данных модели.
Говоря об этой модели данных, это не очень хорошая идея, чтобы жестко закодировать ее в инфраструктуру государственного аппарата, поскольку она делает все довольно неуклюжими довольно быстро.
Вместо этого подумайте об использовании интерфейса типа «доска» или «доска объявлений». Эта идея гласит, что каждое состояние должно иметь интерфейс для записи сообщения в объект.
Это можно сделать с помощью делегатов на C#, передав объект в каждое состояние при его создании или любой другой шаблон, который даст всем состояниям на компьютере доступ к этому «глобальному» ресурсу.
Идея платы заключается в том, что состояния могут отправлять данные на нее, например результаты некоторых вычислений или значение некоторого ввода пользователя. Затем позже другое запущенное состояние может выбрать чтение сообщения для полезного значения.
Посетитель или цепочка командного шаблона могут работать на вас. –
Прочтите банду 4. Внесите все их, а затем сообщите нам, какая из них лучшая;) –