哪个更好?传递对象引用或传递属性本身?

时间:2015-09-29 10:52:55

标签: php object

class Parent
{
    public function getSomething()
    {
        return '';
    }

    public function createChild($name)
    {
        return new Child ($name, $this);
    }
}

class Child
{
    public function __constructor ($name, Parent $parent)
    {
        $parent->getSomething();
    }
}

在此代码中,Parent会创建Child - Child需要来自其Parent的内容,因此会有一种循环引用。 编辑:所以父创建Child(ren)但是Children依赖于Parent,他们不能成为一个独立的实体,这就是我的感受。 如果我这样改写,那会更好吗?

class Parent
{
    private function getSomething()
    {
        return '';
    }

    public function createChild($name)
    {
        return new Child ($name, $this->getSomething);
    }
}

class Child
{
    public function __constructor ($name, $something)
    {
    }
}

但在这种情况下,如果Child需要更多,该怎么办?通过构造函数将所有这些东西传递给它?

1 个答案:

答案 0 :(得分:1)

  

通过构造函数将所有这些内容传递给它?

如果Child只需要在实例化时出现的某些数据且没有调用Parent的任何方法,我会说,是的。

原因:最小化耦合。您不会引入不必要的依赖。

但是,由于您提到了“引用”,因此您可能希望Child稍后可以访问Parent的属性。然后更清洁的方法是通过Parent的访问器方法来实现,而不是通过后门通过引用公开这些属性。

我看到,“引用”指的是对象引用。在这里做了错误的假设。