Допустим есть задача обработать большое количество разных, но однотипных событий.
Например, нажатия клавиш клавиатуры.
Клавиш много … ещё и модификаторы.
Вложение:
ev1.png [ 20.89 КБ | Просмотров: 10880 ]
Пока всё нормально. Проблемы начинаются когда нужно разобрать штук 30 клавиш.
Реакцию на каждую клавишу удобно описывать в отдельной ветке,
но сначала нужно Переключателем разобрать маршруты.
Вот как-то так:
Вложение:
ev2.png [ 26.68 КБ | Просмотров: 10880 ]
И в сокращённом виде:
Вложение:
ev3.png [ 53.28 КБ | Просмотров: 10880 ]
Конечно, можно использовать Вставку, обрабатывающую конкретное нажатие клавиши,
прямо на маршруте соответствующего Варианта в Переключателе.
Правда, при большом количестве Вариантов, отсуствует возможность фрагментирования схемы,
в отличии о того, как это можно сделать с Ветками, отделив их друг от друга Соединителями.
Для устранения длинных горизонтальных Переключателей, на мой взгляд, можно воспользоваться следующей конструкцией:
Вложение:
ev4.png [ 43.11 КБ | Просмотров: 10880 ]
Икона Выбор (под №1) — описывает критерий, по которому будет производится отбор маршрутов.
Икона Вариант (№2, в данном случае Множественный вариант) — описывает множество вариантов
и идентификатор множества (самая верхняя строка).
Икона Адрес (№3) — содержит идентификатор множества и может ссылаться на любую ветку,
имя которой содержится в иконе Вариант (№2).
Конкретная ветка определяется во время исполнения действий, описанных в алгоритме.
Итог:
1
Получаем компактную запись выбора из большого количества вариантов.
2
Получаем возможность описания каждого варианта в ветке.
3.
Получаем возможность деления схемы Соединителями.