#java #list #oop #arraylist #field
#java #Список #ооп #arraylist #поле
Вопрос:
Я надеюсь, что вопрос не слишком расплывчатый или широкий для ответа. Я могу создать сам список везде, где мне это нужно; если мне это нужно как статическое поле, я могу сделать это и в других классах. Зачем мне добавлять пользовательский список в качестве поля в том же классе? Каковы сильные и слабые стороны этого подхода в ООП? Можете ли вы объяснить различия в результатах этих подходов?
Редактировать: обычно я использую пользовательские списки, как предлагается, для хранения нескольких экземпляров класса. Я изучаю код других людей и вижу эти подходы, в которых классы не имеют родительско-дочерних отношений с другими, но он определен как объект list в том же классе, что и поле для хранения нескольких экземпляров самого класса. Это напоминает мне эффект бесконечного зеркала. Итак, я хотел знать, чего мне здесь не хватает.
class Record {
String name;
String surname;
String phoneNumber;
ArrayList<Record> phoneBook;
}
class Main {
String x;
String y;
ArrayList<Record> phoneBook;
}
Комментарии:
1. Класс с именем,
Record
содержащимphoneBook
, звучит некорректно, поэтому дизайн отключен. Подобная рекурсивная структура возможна и полезна в некоторых случаях, но не здесь.2. Сам по себе подход в порядке и может использоваться для представления любой древовидной / иерархической структуры данных (
Node
ссылка на списокNode
s, генеалогическое дерево —Person
наличие родителей и списков братьев, сестер и детей,Employee
наличие босса и списка подчиненных. и т.д.)
Ответ №1:
Исходя из того, что вы говорите, предположим, что у вас есть 10 экземпляров класса Record, и предполагая, что в каждом классе вы сохранили список всех этих 10 экземпляров, тогда у вас фактически будет 100, и в зависимости от того, что вы делаете, производительность вашего приложения может пострадать.
С другой стороны, допустим, у вас есть 10 экземпляров класса Record, но вы храните только сам экземпляр в списке, это не имеет смысла, это вообще не будет полезно.
Наконец, логично было бы, чтобы при создании списка сохранялось несколько экземпляров класса, а затем вы могли получить доступ к данным каждого из них, поэтому использование списка в самом классе в этом случае бесполезно.