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

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

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

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

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

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