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关联:从Rel DB读取对象数据时如何防止多对象引用_Oop - Fatal编程技术网

OOP关联:从Rel DB读取对象数据时如何防止多对象引用

OOP关联:从Rel DB读取对象数据时如何防止多对象引用,oop,Oop,我正在我公司的软件解决方案中设计一种面向对象的方法,我不知道如何“一致地”保存数据,防止创建相同的对象,在哪里保存对象引用 通常,我有一个合同池和属于该合同池的帐户。两者都可以独立存在(关联)。在特定情况下,该帐户可以属于多个合同池 在这两个类中保存一个引用是解决数据不一致问题的好方法吗。(A指B,B不指A) 我需要从两个方面进行实例化。 帐户->获取家长() ContractPool->Get_Members() 是否有办法防止创建同一对象。示例:ContractPool->Get_Mem

我正在我公司的软件解决方案中设计一种面向对象的方法,我不知道如何“一致地”保存数据,防止创建相同的对象,在哪里保存对象引用

通常,我有一个合同池和属于该合同池的帐户。两者都可以独立存在(关联)。在特定情况下,该帐户可以属于多个合同池

  • 在这两个类中保存一个引用是解决数据不一致问题的好方法吗。(A指B,B不指A)
  • 我需要从两个方面进行实例化。
    • 帐户->获取家长()
    • ContractPool->Get_Members()
  • 是否有办法防止创建同一对象。示例:ContractPool->Get_Members(),因为这些调用会触发我获取ID的数据库,我将根据该数据库实例化合同池/帐户 如果我在错误的地方发帖,请引导我到适当的地方

    如果需要更多信息,我很乐意提供

    先谢谢你,汤姆

    编辑 此问题/答案:stackoverflow.com/questions/16732607/… 以及:agiledata.org/articles/mappingObjects.html

    提供一个如何进行房地产关系映射的清晰概述。因此,主要问题是:

    “如何防止对同一对象的多个引用。”

    示例:如果我读取帐户的合同池。之后检索契约池的成员,我希望先前存在的帐户的引用相同


    但是我根据ID从数据库中读取了这个日期。因此,我不是单纯地将其添加到数组中。

    您的问题不是很清楚,但我想您希望确保合同池对象引用的帐户对象与以前实例化的帐户对象相同,而不是新的帐户对象

    如果是这样,那么您所需要做的就是首先实例化account对象,然后将它们关联到它们所属的相应合同池对象


    很抱歉,我无法给出更完整的答案,因为您的问题不够具体。

    此问题/答案:以及:提供有关如何进行房地产关系映射的清晰概述。因此,主要问题是:“如何防止对同一对象的多次引用。”谢谢您的回答。这就是我到目前为止所做的。问题是我的关系应该可以从双方进行实例化。Account=>实例化合同池合同池=>实例化成员合同池/帐户。对于后一种情况:这不是问题,因为这会自上而下地实例化所有内容。但是对于第一种情况:Account=>Instantiates Parent=>Parent Instantiates accounts我如何保持这里对先前创建的帐户的引用?必须实例化双向关系通常是过度思考解决方案的结果。如果您单独考虑每个用例,从UI一直到数据层,您可能会发现没有一个用例需要每个对象同时相互引用。您还将看到,当您到达数据层时,会出现双向关系,因为您仍然下意识地(错误地)尝试将关系模型映射到一个对象模型上。(续。)(续。)你要做的是为每个用例专门设计你的对象。例如,如果您在列表中显示帐户,每个帐户都具有关联的合同池名称,则不需要实例化
    帐户
    对象,也不需要实例化与
    合同池
    对象的关联;一种更合理的方法是创建一个
    AccountListItem
    ,其中包含合同池的名称作为属性——对于这个特定用例,不需要维护与合同池对象的关联。