Сложный рисунок мастера - PullRequest
       10

Сложный рисунок мастера

0 голосов
/ 10 ноября 2011

Я пытаюсь спроектировать скелет для своего мульти-волшебного программного обеспечения и не могу найти хорошего решения для этого. Все мои попытки слишком сложны и безобразны. Я использую NET CF и WinForms.

У меня есть количество просмотров: ViewA, ViewB, ViewC, ViewD и т. Д., У каждого просмотра есть кнопки «назад», «далее» и «отмена»

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

WzrdA: -> ViewA <-> ViewB <-> ViewC ->
WzrdB: -> ViewB <-> ViewD -> 
WzrdC: -> ViewC <-> ViewD -> 

И, наконец, мастера объединяются в рабочие процессы:

WfA: ViewMain (start WfA) -> WzrdA -> WzrdB -> WzrdC -> back to ViewMain
WfB: ViewMain (start WfB) -> WzrdA -> WzrdC -> back to ViewMain

Итак, у меня есть один главный вид с двумя кнопками «Start WfA» и «Start WfB», в этом случае рабочий процесс «WfB», например, должен отображать следующие представления:

 -> ViewA <-> ViewB <-> ViewC ->   ViewC <-> ViewD -> 

эта последовательность описывает кнопки «назад» / «вперед»; если была нажата кнопка «Отмена», она должна быть немедленно перемещена на главный экран.

Кто-нибудь знает ясное и хорошее решение этой проблемы?

1 Ответ

2 голосов
/ 10 ноября 2011

Следующая концепция (из вашего поста) обычно нарушает DRY, SRP и OOP:

в каждом представлении есть кнопки «назад», «далее» и «отмена»

Для структуры мастера у вас обычно было бы одно родительское представление, в котором размещены эти кнопки.Должен быть контроллер, который управляет коллекцией страниц (LinkedList <> кажется естественным соответствием) и загружает страницы в родительский в соответствии с вашей логикой потока.

Общая архитектура, которую я здесь описываю, соответствует MVC, Проверьте это .

Подробнее: Контейнер мастера может быть формой (с панелью для изменения размера для размещения страниц), но ваши страницы должны иметь пользовательские элементы управления, чтобы вы могли размещать их внутриродитель.

...