我不知道如何在我的应用程序中设计几个类。 基本上这是一个情况:问题与类设计模拟不同类的用户首选项
- 每个用户可以有许多偏好
- 每个偏好可以被称为不同的类的一个目的
- 偏好被表示为(例如专辑,电影,书籍等)一组值(例如分数等)。
的问题是,许多用户可能对同一对象的首选项,例如:
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
}
而实现所有这些类的。 这可以工作,但它看起来很丑,需要大量的连接才能工作。 你有一些模式可以用来模拟这个很好吗?
干杯, Mulone
谢谢! 有没有一种优雅的方式来建模与不同类别的关系? 现在我会用不同的成员做到这一点: 电影targetFilm 专辑targetAlbum 等等 但是,这是非常丑陋的,需要的逻辑。 有什么想法? – Mulone 2010-05-17 14:02:36
另外,是否可以在Grails中使用接口? 我找不到关于它的文档。 – Mulone 2010-05-17 14:10:00
对不起。我是一名数据建模师,而不是Grails开发人员。就你的对象而言,你可以有一个庞大的类,它拥有你想要建模的所有不同对象的所有元素。空间有点浪费,但在概念上更简单。 或者,您可以拥有一个基础对象类,定义常用元素,并让您的电影和专辑类继承基础对象,并分别定义特定于电影和专辑的元素。 – 2010-05-17 14:26:41