Можно ли, из экземпляра класса иметь ссылку на его родителя и пользоваться им? Нужен совет по ООП.
Есть основной класс в котором скопилось очень много кода, хочу его разгрузить, то есть разбить по возможности на отдельные классы.
Допустим, у меня есть логический кусок, который я выношу в отдельный класс, но в нем достаточно часто используются члены главного класса. И появляется проблема выбора способа доступа к этим членам. Для решения рассматриваю такие варианты:в доп. классе создать используемые переменные, и в конструкторе часть из них инициализировать, часть из них передавать аргументами в нужный метод
(какую проблему вижу) повторный код, большой список аргументов (конструктор/метод)в конструкторе доп. класса объявить параметр типа родительского класса, и при создании объекта доп. класса передавать в конструктор this (то есть мы будем получать ссылку на родителя) и по этой родительской ссылке юзать нужные поля
(какую проблему вижу) На сколько я знаю, считается плохой практикой передавать ссылку на родителя в объекты. Экземпляр ничего не должен знать что происходит вверх по иерархии, манипуляции идут Только вниз по иерархии. Правильно?
Не вариант этот кусок кода оставлять на месте.
Работать будет и так и так, но как сделать лучше? I need to best practices.

21 Авг 2019 в 06:59
174 +1
0
Ответы
1

В данной ситуации наиболее правильным и рекомендуемым способом будет передача необходимых данных в качестве параметров методов дополнительного класса, а не передача ссылки на родителя.

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

Поэтому, рекомендуется избегать передачи ссылки на родителя в дополнительный класс и использовать передачу параметров методам для получения необходимых данных. Это позволит сохранить чистоту кода, упростит его понимание и поддержку в дальнейшем.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 093 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир