Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 域对象中的集合属性-何时使用?_Oop - Fatal编程技术网

Oop 域对象中的集合属性-何时使用?

Oop 域对象中的集合属性-何时使用?,oop,Oop,当涉及到一对多关系时,我很难对域类进行建模 大多数搜索结果专门讨论DDD和所谓的聚合根。例如,带有订单项的订单类 在我的具体场景中,我有一个“Report”类,它可以引用其他域对象。财产“参考”是一个问题: { "Id": "someReportId", "References": [ { "ObjectType": "Machine", "ObjectId": "someMachineId" }, { "ObjectTyp

当涉及到一对多关系时,我很难对域类进行建模

大多数搜索结果专门讨论DDD和所谓的聚合根。例如,带有订单项的订单类

在我的具体场景中,我有一个“Report”类,它可以引用其他域对象。财产“参考”是一个问题:

{
  "Id": "someReportId",
  "References":
  [
    {
      "ObjectType": "Machine",
      "ObjectId": "someMachineId"
    },
    {
      "ObjectType": "Address",
      "ObjectId": "someAddressId"
    }
  ],
  "Answers": 
  {
    "question1": 42,
    "question2": "some answer"
  }
}
对我来说,将“引用”建模为域对象的属性是有意义的。我的API的第一个使用者没有问题

但是,第二个使用者需要单独保存和删除每个“参考”。我的CRUD服务只允许您保存或删除整个“报告”对象


出于这个原因,我删除了该属性并将其移动到一个单独的服务中。但我恐怕看不出我什么时候可以使用集合属性。有什么经验法则吗?

如果集合的元素没有自己的标识符,即它们是“值”对象,那么它们必须是主对象中的集合的一部分。例如,
联系人
对象具有一组
地址
元素,但每个地址不需要单独识别。感谢您的回复。这些元素作为复合键存储在数据库中。第一个“引用”是:“someReportId”+“Machine”+“someMachineId”。这3个PK列是唯一的列。这是否意味着要成为一个价值对象?那么,我最初的想法是否正确,将其建模为集合属性?如果它们的标识取决于父对象的标识(我认为在本例中它们是),那么它们应该是值对象,即使它们实际上在存储中有键。运行时的标识是一个重要因素。如果集合的元素没有自己的标识符(即,它们是“值”对象),则它们必须是主对象内的集合的一部分。例如,
联系人
对象具有一组
地址
元素,但每个地址不需要单独识别。感谢您的回复。这些元素作为复合键存储在数据库中。第一个“引用”是:“someReportId”+“Machine”+“someMachineId”。这3个PK列是唯一的列。这是否意味着要成为一个价值对象?那么,我最初的想法是否正确,将其建模为集合属性?如果它们的标识取决于父对象的标识(我认为在本例中它们是),那么它们应该是值对象,即使它们实际上在存储中有键。运行时的身份是一个重要因素。