@KuzmenkoArtem

Какой лучший способ расширить класс?

Примерный алгоритм такой
  • В метод приходит объект
  • При неком условии нужно добавить объекту функциональность
  • Работать дальше


Похоже на паттерн декоратор, но у исходного объекта нет интерфейсов, и нужно именно добавить функциональность, а не расширить уже существующие методы

Спасибо!

P.S. изменять исходный объект нельзя

Думал о таком.
  • Создать класс обертку
  • В конструктор передавать желаемый объект для расширения и добавить как поле класса
  • создать новый метод с необходимым функционалом
  • создать __call магический метод и переводить все вызовы методов на изначальный объект

Проблема в таком подходе что IDE (шторм) не выдает подсказок при вызове методов, а хотелось бы. Может есть какой-то способ указать? кроме как @method в комментариях, т.к. там очень много методов

P.S.2 расширить класс наследованием тоже сложно, так как у исходного класса сложный конструктор, и просто вытащить значения из исходного объекта и передать в конструктор не получится
  • Вопрос задан
  • 417 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы