Подскажите паттерн или алгоритм для следующей задачи: есть ряд объектов, которые логически связаны между собой по подобию дерева. При определенном изменении одного из них может происходить вызов метода родительского, который в свою очередь также может измениться и вызвать метод из своего родителя (а может и не вызвать, проверка по условию). Это происходит по цепочке взаимосвязи в дереве. Также вызов может идти и от родителей, при этом возможно ветвление (вызов нескольких методов из разных объектов). Циклов быть не должно(их и нет в логике взаимосвязи): то есть вызов идет в одном направлении и вернуться к первоначальному не может. Разделение на родителей и потомков условное для этой задачи, наследования нет никакого. Предпочтительно ООП. С JS я на уровне начинающего.