Вы можете использовать ваш ConcreteDecorator в качестве центрального элемента. Идея состоит не в том, чтобы ограничить вас от этого, а в том, чтобы дать вам возможность иметь несколько декораторов, и ваш клиент может обращаться с ними единообразно.
В основном тип вашей переменной должен быть Decorator ( абстракция) и ваша зависимость во время выполнения может быть любым подклассом этой абстракции, который вам нравится. Идея состоит в том, чтобы отделить детали реализации от абстракции. Таким образом, вы можете прикрепить различные декораторы во время выполнения и изменить поведение или добавить состояние. Сила использования абстракции, а не конкреции, заключается в том, что вы можете изменять конкрецию во время выполнения, если ваш тип переменной - Декоратор (абстракция)