Например, у меня есть класс сущности User
:
public class User
{
private long id;
private String name;
// setters and getters
}
Далее я добавляю новый класс сущности: Comment
public class Comment
{
private long id;
private String comment;
// setters and getters
}
Далее я могу добавить еще ибольше классов сущностей.
И в этот момент я думаю: я могу / должен связать / соединить в логической структуре свои классы сущностей или нет?
Что я имею в виду?Я пытаюсь объяснить:
Точка 1: Все эти классы: User
, Comment
и другие - POJO
.
Идея 1: Нужна логическая привязка для этих классов через интерфейс илиабстрактный класс.
Пункт 2: Я вижу, что все классы сущностей имеют одинаковые методы: getId
и setId()
.
Идея 2: Необходимо избегать объявления этого метода во всех классах.
Мое решение:
Добавить интерфейс BaseEntity
:
public interface BaseEntity
{
public long getId();
public void setId(long id);
}
Добавить все классы сущностей, которые должны реализовывать этот интерфейс.
В результате мы получаем логическое соединениевсе классы сущностей.И мы гарантируем, что каждый класс сущностей реализует методы getId()
и setId()
.
Но это решение не решает проблему с множественным объявлением getId
и setId
.
Решениезаключается в создании общего класса BaseEntity:
public class BaseEntity
{
private long id;
public long getId() {return this.id};
public void setId(long id) {this.id = id;};
}
И весь класс сущностей должен расширять класс BaseEntity.
мммм, звучит неплохо:)
Но, с текущей реализацией - пользовательможно создать экземпляр BaseEntityClass. Это имеет смысл?Могу ли я дать возможность создать класс BaseEntity?
Или, может быть, хорошим решением пометить этот класс как abstract
?Как вы думаете?
И если вы согласны со всеми моими предыдущими шагами:
У меня последний вопрос:
Связь между классами должна основываться на интерфейсах.Но у меня нет интерфейса для сущностей.Это может создать проблемы для меня в будущем?
Спасибо.