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

Я создаю сайт с изображениями, сообщениями, альбомами и т. д.

Каждый может оставить комментарий.

Единственная реальная разница между этими комментариями состоит в том, что один будет комментарием к публикации, один будет комментарием к альбому, третий будет комментарием к картинке и т. д.

Если это единственное различие между этими комментариями, то стоит ли иметь подклассы, такие как PostComment, AlbumComment, PictureComment, которые все наследуют от Comment? Все они имеют одинаковые поля, за исключением одного поля, которое отличает их друг от друга.

Это перебор?

Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
0
0
14
1

Ответы 1

Я бы не сказал, что есть действительно «правильный» способ сделать это, поскольку это зависит от вашего конкретного варианта использования. Я лично не сказал бы, что подкласс для каждого PostComment, PictureComment и т. д. Является излишним, поскольку каждый подкласс будет иметь разные поля по сравнению с основным классом Comment. Таким образом, наследование могло бы стать прекрасным решением проблемы, если вы выберете классы; он четко обозначает, что является уникальным для каждого подкласса и что разделяется между ними.

Сказав это, я, вероятно, вместо этого выбрал бы ассоциацию таблиц базы данных, просто имея таблицу Comments вместе с таблицами Pictures и Posts. Затем вы можете просто настроить столбец type в таблице Comments, который является отображением внешнего ключа в соответствующую таблицу.

У вас может быть один внешний ключ, который соответствует двум разным таблицам? Я никогда об этом не слышал.

Brent Heigold 20.12.2018 20:54

Другие вопросы по теме