Я не уверен, как спроектировать пару классов в моем приложении.
В основном это ситуация:
- у каждого пользователя может быть множество предпочтений
- каждое предпочтение можно отнести к объекту разных классов (например, альбом, фильм, книга и т. Д.)
- предпочтение выражается в виде набора значений (например, оценка и т. Д.).
Проблема заключается в том, что многие пользователи могут иметь предпочтения для одних и тех же объектов, например:
John: score=5 for filmid=apocalypsenow
Paul: score=3 for filmid=apocalypsenow
И, естественно, я не хочу дублировать объектный фильм у каждого пользователя.
Таким образом, я мог бы создать класс с именем «preference», содержащий счет, а затем целевой объект, что-то вроде:
User{
hasMany preferences
}
Preference{
belongsTo User
double score
Film target
Album target
//etc
}
и затем определите только одну цель.
Затем я бы создал интерфейс для целевых классов (альбом, фильм и т. Д.):
Interface canBePreferred{
hasMany preferences
}
И реализовать все эти классы.
Это может сработать, но выглядит довольно уродливо и для работы потребуется много соединений.
У вас есть какие-то модели, которые я мог бы использовать, чтобы смоделировать это?
Cheers,
Mulone