工厂或构造函数 - 在哪里设置对象属性?

时间:2011-10-02 17:36:54

标签: php constructor factory

我有点困惑,在构造函数或工厂方法中设置对象属性的正确位置是什么,或者它没关系?

在构造函数中:

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;
    }
}

1 个答案:

答案 0 :(得分:0)

问题是你可以在不设置 b 属性的情况下实例化该类。如果它可以工作,则不需要在构造函数中设置该属性。如果属性对于其他方法的工作很重要,则必须在构造函数中设置它。工厂与此无关。如果工厂是实例化类的唯一方法(构造函数是私有的),那么代码将被封装,但仍然需要将所需的参数传递给构造函数,否则在重构代码时很容易忘记它们