Я хотел бы реализовать шаблон проектирования Decorator, используя наследование (Decorator extends Component
), потому что мне нужен доступ к защищенным полям / методам класса Component.
Проблема в том, что класс Component представляет алгоритм, он выполняет некоторую предварительную обработку при построении и содержит значительный объем данных.Теперь каждый раз, когда я буду украшать Компонент, я буду создавать новый экземпляр Decorator, который потребует создания нового (бесполезного) экземпляра Компонента, выполняющего ненужные вычисления и хранящего ненужные данные.
Я хотел использовать интерфейсы вместо наследования, но тогда я не смогу получить доступ к защищенной информации Компонента.
Правильно ли я беспокоиться о напрасной трате ресурсов при расширении класса Component?И если так, как я могу избежать этого, не теряя доступа к информации, которая мне нужна?
Последнее замечание: я мог бы создать экземпляр Decorator, предоставляя ему «фиктивные» данные, чтобы он выполнял минимальное количество вычисленийно это решение кажется грязным.
Спасибо.