2012-01-27 2 views
-1

Мне нужно создать приложение, имеющее 22 первичных изображения и 13 вторичных изображений.Лучший способ реализовать этот поток в C#

Описание потока: Я вижу изображение1, имеет один контрольный список с двумя вариантами (это условия). Если отмечено условие1, тогда он переходит к image23, а затем, если опция2 проверена, идет на изображение 24, а затем на изображение2, если оба не отмечены, идет непосредственно к image2.

Вот поток иллюстрировать:

a flowchart

В некоторых случаях может иметь два или три условия, или даже только одно условие.

Мне нужно прочь сделать это на C#. Как я могу прыгать между изображениями? 35 Панели, играющие с видимым вариантом? MultiViews? Любой другой контроль? Есть ли какой-нибудь способ лучше сделать это без стольких ifels? Пожалуйста, дайте мне некоторые рекомендации ..

+0

Существует всегда использование 'case', когда у вас есть более чем один вариант. Но для boolean То или иное, 'if'' else' лучше – Doomsknight

+0

Что именно вы ищете? Пользователь настраивается? Дизайн шаблона? – Holystream

+0

Прежде всего, лучший способ перехода от изображения к изображению в пользовательском интерфейсе. Панели Видимые true/false? Мультивизор? – ajrpc

ответ

1

Вы должны узнать о конечных автоматах; вы могли бы легко свернуть свой государственный автомат, как только у вас будет хорошее понимание теории.

Вы также можете сохранить переходы между состояниями в файле для максимальной простоты настройки.

0

Я не знаю, помогает ли это или нет, но кажется, что «пустое» условие для Image3 или Image4 эквивалентно непустому состоянию, true.

Это означает, что у вас есть сопоставление между условиями и значениями. Вы можете использовать его для извлечения этой части кода методу, который принимает условие (или просто true как пустое условие) и имя изображения и делает что-то с именем, если условие выполнено.

2

Нету просто использовать, если/иначе, если/еще или случае заявления ...

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

+0

Согласен с вашей точкой. –

0

Вам нужно прочитайте в Design Patterns. Вместо менее полезной книги «Банда 4» я предлагаю совершенно отличную книгу, Head First Design Patterns, Эриком Фриманом и Элизабет Фримен.

Head First Design Patterns Cover

Конкретная модель вы заинтересованы в том, Государственный шаблон. Это диаграмма классов

State Pattern Class Diagram

В двух словах, то есть контекст, что делает что-то полезное. Внешний интерфейс полностью зависит от ваших потребностей. Каждый экземпляр контекста имеет ряд различных внутренних состояний, в которых он может быть. Кодирование этого как совокупности вложенных if/then/else/switch/lookup и т. Д. Усложняется и затрудняет обслуживание и отладку. Итак ...

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

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

Одной из обязанностей для конкретных _state случаев является обеспечение контекста со следующим состояния он должен переходом на на основе действий (мер).

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

Государственный шаблон похож на (но отличается от) Strategy Pattern.

Вот несколько ссылок, которые помогут вам начать работу.

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