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