Например, у меня есть класс сущностей 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 класс.
мммм, звук хороший :)
Но, с текущей реализации - пользователь может создать instanse BaseEntityClass. Это смысл? Я могу дать возможность создать класс BaseEntity?
Или, может быть, хорошее решение пометить этот класс как abstract
? Что вы думаете?
И если вы согласны со всеми моими предыдущими шагами:
У меня последний вопрос:
Связь Разногласия между классами должны на основе интерфейсов. Но у меня нет интерфейса для объектов. Это может создать проблемы для меня в будущем?
Спасибо.