То, что вы описываете, представляет собой смесь шаблонов декоратора и шаблона.Шаблон декоратора позволяет вам динамически добавлять поведение к объекту (используя прокси-подобный механизм).Шаблон шаблона разбивает алгоритм на несколько методов, поэтому вы можете изменять поведение объекта, подставляя методы с помощью подклассов или, в вашем случае, декоратора.
Поскольку декораторы являются типом прокси, они содержат ссылку нацелевой объект (или другой декоратор, обернутый n-слоями глубоко вокруг целевого объекта).Но цель обычно не отслеживает свои декораторы и не делает никаких предположений относительно декораторов.
Так что каждый раз, когда поведение целевого объекта изменяется путем добавления или удаления самого внешнего декоратора, ваш дизайн должен будет либо обновить целевой объект с помощьюссылка на его самый внешний декоратор или целевой объект должен будет запросить другой объект для ссылки на самый внешний декоратор.
Если целевой объект может запросить ссылку на декорированный стек объектов из любого объекта, ответственного за его удержание (что-то должно), значит, ты, наверное, в порядке.В противном случае целевому объекту может потребоваться обратиться к делегату или посреднику.