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

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

问题描述:

我有点困惑,在构造函数或工厂方法中设置对象属性的正确位置是什么,或者它并不重要?工厂或构造函数 - 在哪里设置对象属性?

在构造函数中:

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

在你的工厂方法和构造函数中做同样的事情。对于你的代码是没有关系的。 – pltvs

+1

就工厂而言,它没有区别,因为它是封装:) – hakre

+0

@JaredFarrish更正,谢谢! –

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