У агрегата будет свойство _state. При изменении одного стейта на другой будет подменяться объект стейта на иной. Правила перехода от стейта к стейту можно внутри самих стейтов инкапсулировать.
Надо выписать все этапы жизненного цикла, общие вещи можно вообще в свои агрегаты вынести. Так проверки вида "если статус такой-то" заменяются на "если такой агрегат вообще есть". Переходы статусов - одни агрегаты поражают другие