工厂或构造函数 - 在哪里设置对象属性?
问题描述:
我有点困惑,在构造函数或工厂方法中设置对象属性的正确位置是什么,或者它并不重要?工厂或构造函数 - 在哪里设置对象属性?
在构造函数中:
class Foo {
public $bar;
function __constructor($b) {
$this->bar = $b;
}
static function factory($b) {
return new self($b);
}
}
工厂:
class Foo {
public $bar;
static function factory($b) {
$obj = new self();
$obj->bar = $b;
return $obj;
}
}
答
的问题是,你可以实例化类不设置b财产。如果它可以工作,则不需要在构造函数中设置该属性。如果该属性对其他方法起作用很重要,则必须将其设置在构造函数中。工厂与此无关。如果工厂是实例化类的唯一方法(构造函数是私有的),那么代码将被封装,但仍然需要将所需的参数传递给构造函数,否则在重构代码时很容易忘记它们。
在你的工厂方法和构造函数中做同样的事情。对于你的代码是没有关系的。 – pltvs
就工厂而言,它没有区别,因为它是封装:) – hakre
@JaredFarrish更正,谢谢! –