У меня есть элементы.объектов, которые являются художниками, плотниками и TeamLeads, которые могут иметь под ними другие TeamLeads, художники или плотники. Есть ли способ подключить их, чтобы я мог getTeamLeads.team, а также иметь возможность видеть, кто работает под их TeamLeads.team. Я понимаю, как это сделать с базой данных, но хотел бы посмотреть, будет ли состав или агрегация обрабатывать отношения 1: m, и если есть пример где-то, что я мог видеть. Требуется ли, возможно, Team.class, чтобы связать всех или может быть обработано локальными ссылками, и я просто не могу найти никаких примеров.Агрегация с 1: м между объектами
ответ
Как я вижу это вы можете сделать это с помощью частной коллекции, которой можно управлять с помощью модификаторов, которые также означает сохранение обратной связи что-то вроде этого:
public class TeamMember {
private TeamMember leader;
private Set<TeamMember> teamMembers= new HashSet<TeamMember>();
public Set<TeamMember> getTeamMembers(){
return new HashSet<TeamMember>(teamMembers);
}
public void addTeamMember(TeamMember member){
if(member.leader!=null){
member.leader.removeTeamMember(member);
}
member.leader=this;
teamMembers.add(member);
}
public void removeTeamMember(TeamMember member){
member.leader=null;
teamMembers.remove(member);
}
public TeamMember getLeader(){
return leader;
}
}
Поскольку вы не имеют публичные сеттер для teamMembers или лидера Единственного способ изменить лидера или членов команды с помощью методов addTeamMember и removeTeamMember, чтобы у вас были двунаправленные отношения, поддерживаемые этими методами.
Желаю этого.
Так это звучит, как у вас есть какой-то метод с таким родом подпись, чтобы получить список TeamLead:
public List<TeamLead> getTeamLeads()
И оттуда, вы хотите, чтобы заставить член каждой команды, ваш TeamLead
класса будет выглядеть примерно так:
public class TeamLead {
private final List<Person> team = new ArrayList<Person>();
// You can of course populate this list however is best for your code
public void addTeamMember(Person p) {
team.add(p);
}
public List<Person> getTeam() {
return team;
}
// more code...
}
Где Person
является базовым классом для Painter
, Carpenter
и TeamLead
- есть и другие способы сделать это без иерархии классов, но я буду придерживаться т o это для более простого объяснения.
- 1. Заполните 0 с 1-м между двумя 1-м (синтезируемым)
- 2. Рубин агрегация с объектами
- 3. Сравнение чисел между 1-м массивом и 2-м массивом
- 4. Android - Как переключаться между 1-м и 3-м действиями?
- 5. обеспечения согласованность между несколькими 1: м отношениями
- 6. Рассчитать м 1, м 2 при у = 1 м х 1 + м 2 х 2 с помощью Math.NET
- 7. NHibernate; Основы двунаправленного 1: м, м: м и список/IList
- 8. MongoDB агрегация драйвера Java над вложенными объектами
- 9. Взаимосвязь между объектами
- 10. Обмен объектами между объектами
- 11. Ковариация между 1-м и 3-мерным массивом в Python
- 12. grails. Класс домена. 1: м
- 13. Знак регулярного выражения, необходимый между 1-м и 8-м символами
- 14. Реализовать отношения 1 м с использованием анорма
- 15. Как рассчитать процентную разницу между 1-м и 6-м ключами в списке словарей?
- 16. Ошибка с передачей данных между файлами м
- 17. панды агрегация - расчеты между столбцами
- 18. LibGDX Проблемы с текстурами в 1-м запуске после установки
- 19. Преобразования между ногами и м
- 20. Агрегация правил JUnit с зависимостями между собой
- 21. Связь между объектами с IOLoop
- 22. CoreData отношения между объектами
- 23. Обмен информацией между объектами
- 24. Связь между объектами NSManagedObjects
- 25. ссылки Lua между объектами
- 26. Разница между взаимозаменяемыми объектами и неизменяемыми объектами
- 27. Различия между объектами js
- 28. Противоречивые связь между объектами
- 29. объекты между объектами питона
- 30. Пространство между движущимися объектами