ООП решения сложны для понимания.
Каждый раз для внесения изменений нужно заново пройти квест наследования,
чтобы понять где находится суть действия над данными.
Единственно верное решение сложной задачи без усложения — модули.
И еще храните состояние в базе, если есть база.
не нужно без необходимости использовать ООП.
например очередь. зачем? если есть база, создай таблицу в которую кидай айдихи сущностей которые нужно обработать
и в другом потоке доставай сущности по айди в транзакции, обработай и удали из таблицы.