0

假设,我们有类A_1toA_n和类B_1to B_n

每个A_i都有关系(抽象的口语;关系可能是“A_4 喜欢 B_2”)到一组B_j',反之亦然。

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

解决方案 1:每个A_i都有一个列表字段存储与B_j它有关系的 's。

解决方案 2:每个B_i都有一个列表字段存储A_j它与之有关系的 's。

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

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

4

1 回答 1

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
}

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

于 2012-07-21T13:48:07.957 回答