gpt4 book ai didi

oop - 相互需要的对象

转载 作者:行者123 更新时间:2023-12-04 14:02:57 25 4
gpt4 key购买 nike

我处于两个类(我们称之为 A B )彼此相关(它们的方法依赖于另一个类的数据)但IS-A 关系的情况不合适。我可以使用组合,这样两个对象都有存储另一个对象的字段。但这对我来说似乎很丑陋。我目前做的是创建另一个类 C 包含来自 的对象一个 通过组合以及当我想调用类 的方法时一个 , 我传递对象 .我对这种方法的问题:

  • 我需要将一个对象传递给另一个对象,因此它开始类似于一个简单的函数参数传递,而不是对象封装其数据的 OOP 方法
  • 如果我需要改变一些东西,我可能不得不修改两个类的代码 一个 ,这不是代码重用的好点

  • 你有什么建议吗?

    示例
    class Mesh:
    method: plot(this, Solver)
    {
    plot data from class Solver // need to pass a Solver object, so the class is not self-contained
    }
    method: intersect(this, Domain)
    {
    do sth // depends on Domain, so we need to pass it
    }

    class Domain:
    method: plot(this)
    {
    plot data from own data // no problem
    }
    method: selectVertex(this, Mesh)
    {
    do sth // depends on Mesh, so we need to pass it
    }

    谢谢,
    佐尔坦

    最佳答案

    “计算机科学中的所有问题都可以通过另一个间接级别来解决,除了过多的间接层的问题” - David Wheeler。

    您尝试添加另一个间接层,但它没有解决您的问题。所以有一件事从根本上是错误的。

    这是我的观点:

    当你有 2 个相互依赖的对象时,这可能意味着 2 个类应该合并成一个更大的类,这反过来又产生一个更大的对象,它具有两者的功能。

    为什么不?有很多方法可以以面向对象的方式为域业务建模,随着域业务的增长,您的方法可能不再适用。

    关于oop - 相互需要的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850001/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com