На ООП, используя структурный подход и наследование, можно реализовать довольно сложные алгоритмы поведения, при том не сильно запутывая код. Есть несколько подходящих под данную ситуацию паттернов проектирования.
Мы используем файлы cookie и сервис веб-аналитики Яндекс.Метрика. Используя сайт, вы соглашаетесь с Политикой использования cookie-файлов и даёте согласие на обработку данных сервисом веб-аналитики Яндекс.Метрика в соответствии с Политикой обработки персональных данных. Cookies можно отключить в любой момент в настройках вашего браузера.