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
需要更多,该怎么办?通过构造函数将所有这些东西传递给它?
答案 0 :(得分:1)
通过构造函数将所有这些内容传递给它?
如果Child
只需要在实例化时出现的某些数据且没有调用Parent
的任何方法,我会说,是的。
原因:最小化耦合。您不会引入不必要的依赖。
但是,由于您提到了“引用”,因此您可能希望 Child
稍后可以访问Parent
的属性。然后更清洁的方法是通过Parent
的访问器方法来实现,而不是通过后门通过引用公开这些属性。
我看到,“引用”指的是对象引用。在这里做了错误的假设。