在模型上强制执行id关系

时间:2019-01-06 08:32:30

标签: java oop

我有两个具有以下关系的模型对象。

A {
 int id;
 List<B> bList;
}
B {
 int id;
 int idA; // references a particular object A with associated id
}

类A具有类型B的对象的列表。问题是我不知道强制这种关系是否是一种好习惯。这可以确保B的id具有A的id。现在,我正在考虑让A对象返回一个生成器对象,该对象将构建将idA设置为当前实例的正确id的B对象。有没有好的做法?

编辑: 我忘记了一些细节。我考虑了更多,我意识到这不是我可能使用生成器的唯一原因。对象B还具有根据A的特定实例而变化的对象列表。因此,每个A对象本质上都有一个不同的B对象。我对设计模式的了解并不多,但告诉我使用上面所述的构建器模式。你们怎么看?

1 个答案:

答案 0 :(得分:1)

我更喜欢使用PK FK约束在数据库级别执行此操作。 但是,如果您希望在代码上使用它们,我认为最接近的结构化模式就是复合模式。 我建议创建一个共享的A的可用对象的列表,并在B每次引用B的每个A时,为每个B的另一个A创建一个子列表,这使得在A不再存在时,很容易从B销毁(删除)引用。 另外,它可以确保您不添加不存在的A,并保持一致和一致的结构。

 Public static List<Structure> mainList; // This must be updated whenever A created or instantiated by B

 Class Structure{
 Public A obj= new A();
 Public List<B> referencesOfA=new ArrayList<B>();
 }

  A {
  int id;
  List<B> bList;
  }
  B {
  int id;
  int idA; // references a particular object A with  associated id
   }

请参阅: https://refactoring.guru/design-patterns/composite