Дайте мне реальное, нетривиальное использование State Pattern - PullRequest
4 голосов
/ 22 сентября 2010

Я ищу пример того, где шаблон проектирования состояний использовался для решения или упрощения интересных или сложных переходов состояний.Есть множество примеров с тремя или четырьмя простыми состояниями.Но как насчет кода из реальных проектов, которые имеют подсостояния и более чем несколько переходов?Тип кода, который на самом деле мотивирует использование шаблона.Бонусные баллы указатели на код!

Ответы [ 2 ]

13 голосов
/ 22 сентября 2010

Одно из реальных применений State Pattern, которое я видел до сих пор, - это видеоплеер, способный воспроизводить онлайн-видео.

Вы должны управлять воспроизведением, паузой, буферизацией, соединением, поиском и даже другими состояниями.

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

1 голос
/ 23 мая 2017

Система светофора (время срабатывает | срабатывает датчик [событие])

Состояния : КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ (простейший пример)

Переходы : после изменения таймера КРАСНЫЙ на ЗЕЛЕНЫЙ, ЗЕЛЕНЫЙ на ЖЕЛТЫЙ и ЖЕЛТЫЙ на КРАСНЫЙ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...