我有点困惑,在构造函数或工厂方法中设置对象属性的正确位置是什么,或者它没关系?
在构造函数中:
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;
}
}
答案 0 :(得分:0)
问题是你可以在不设置 b 属性的情况下实例化该类。如果它可以工作,则不需要在构造函数中设置该属性。如果属性对于其他方法的工作很重要,则必须在构造函数中设置它。工厂与此无关。如果工厂是实例化类的唯一方法(构造函数是私有的),那么代码将被封装,但仍然需要将所需的参数传递给构造函数,否则在重构代码时很容易忘记它们