У меня есть три класса: пользователь, этаж и каталог.
Каталог содержит / создает несколько статических объектов Floor.
Каждый объект пользователя, наряду с другой информацией, должен знать, на каком этаже он находится.
Каждый этаж, наряду с другой информацией, должен знать, кто из них является одним из них.
Я бы хотел сделать что-то вроде этого:
public class Directory{
public static Floor floor1 = new Floor(3);
public static Floor floor2 = new Floor(3);
class Floor{
private User[] users;
private Floor(int allowedUsers){
users = users[4];
}
public boolean addUser(User toAdd){
// if there is a free slot on floor, add User
for(int i = 0; i < users.length; i++){
if(users[i] == null){
users[i] = toAdd;
return true;
}
}
return false;
}
....(other Floor methods)....
}
}
С классом User, подобным этому:
public class User{
private Floor floor;
public boolean setFloor(Floor floor){
// some code here
// returns true if floor successfully added
}
....(other User methods)....
}
Вопрос:
Я хочу убедиться, что информация, хранящаяся в моих объектах «Пользователь» и «Этаж», всегда соответствует друг другу, чтобы все пользователи знали, на каком этаже они находятся, и все этажи знают, кто на них. Для этого сеттеры должны позвонить друг другу. Как мне сделать это без создания бесконечного цикла? Это кажется достаточно распространенной проблемой, и я предполагаю, что для нее существует стандартный формат, но я не знаю, что это такое.