Я использую паттерн Chain of responsibility и каждое звено может возвращать информацию о том, нужны ли следующие звенья или остановиться на этом.
Сейчас переписываю решению чтобы цепочку превратить в дерево, то есть чтобы звено могло содержать вложенные звенья
Здорово, спасибо)
А можешь чуть подробнее рассказать, как у тебя это устроено?