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