2011-10-02 109 views
1

我有點困惑,在構造函數或工廠方法中設置對象屬性的正確位置是什麼,或者它並不重要?工廠或構造函數 - 在哪裏設置對象屬性?

在構造函數中:

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更正,謝謝! –

回答

0

的問題是,你可以實例化類不設置b財產。如果它可以工作,則不需要在構造函數中設置該屬性。如果該屬性對其他方法起作用很重要,則必須將其設置在構造函數中。工廠與此無關。如果工廠是實例化類的唯一方法(構造函數是私有的),那麼代碼將被封裝,但仍然需要將所需的參數傳遞給構造函數,否則在重構代碼時很容易忘記它們。

相關問題