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