@malomalo

Как в Java правильно проверить уникальность объекта перед созданием?

Посоветуйте, пожалуйста, как правильно организовать проверку на уникальность объекта перед его созданием.

public class User {
    private String name;
    private static Set<String> onlineUsers = new HashSet<>();

    public User(String name) { this.name = name; onlineUsers.add(name); }
    public void logoutUser() { onlineUsers.remove(this.name); }
    public String getName() { return name; }
}

У меня есть класс User, я хочу исключить создание пользователей с одинаковым именем, для этого я хочу записать все имена в HashSet и перед созданием нового объекта User я буду проверять существует ли такое имя. Как правильно организовать логику проверки (правильно ли включать её в данный класс):
1. в конструкторе перед созданием нового объекта User? Нормально ли конструктору выбросить Exception?
2. в том месте кода, где я вызываю конструктор нового объекта User, но в таком случае остается возможность создания двух одинаковых объектов (в другом месте кода, где не будет реализована аналогичная проверка).
3. сделать конструктор private и добавить public static метод addNewUser, который будет проверять есть ли пользователь с таким именем, вызывать конструктор и возвращать ссылку на новый объект? Что должен вернуть данный метод, если указанный объект уже существует и следует ли ему выбросить Exception?
  • Вопрос задан
  • 1165 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Iloveski
На мой вкус вариант 3. Кидать exception или нет и как его обрабатывать зависит от логики того места, где вы создаёте user'a. Только метод лучше назвать createUser или createNewUser
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы