在哪里存储类关系信息?

时间:2012-07-21 13:22:53

标签: java class-relationship

假设我们有A_1A_n的课程,以及B_1B_n的课程。

每个A_i都有一个关系(抽象的说法;关系可以是'A_4喜欢B_2')到一组B_j的关系,反过来也是如此。

问题:哪里有存储关系信息的好地方?这种问题有很好的模式吗?

解决方案1 ​​:每个A_i都有一个列表字段存储与其有关系的B_j

解决方案2 :每个B_i都有一个列表字段存储与其有关系的A_j

解决方案1和2基本相同。

解决方案3 :将信息存储在第三个“信息”类中,例如作为矩阵。

1 个答案:

答案 0 :(得分:1)

无论您在解决方案1 ​​解决方案2 之间选择哪一个,有关类喜欢的内容的某些信息仅存储在另一个类中,这似乎有些倒退。<登记/> 因此,我肯定会选择一个单独的RelationKeeper类,如下所示:

public enum RelationType {
    LIKES,HATES...
}
public class Relation {
   RelationType type;
   Class relatedClass; //Or in what type and form this is stored
}
public class RelationKeeper {
   public List<Relation> getRelationsFor(Class c) {
   }
   public void setRelationsFor(Class c, List<Relation> relations) {
   }
   public void addRelationFor(Class c, Relation relation) {
   }
   ...etc
}

这样,您可以自定义和更改内部存储方法以满足您的需求,具体取决于您是否只能检索类的“传出”关系,或者您是否还希望能够获取“入站”关系。