下面我有一系列的課程。我試圖找出將Process.php中的數據傳遞到以下每個類中的最佳方法。課程結構和傳遞數據
/CLI/
/Process/
/Condition
Rule.php
Condition.php
Single.php
Process.php
Response.php
Registry.php <-- I don't want to use this, It feels sloppy
起初我想層次結構中的數據通過像下面(我不是在此刻偏袒繼承組成延伸的任何東西):
\ CLI \ Process.php
public function run() {
$condition = new Condition($dataToShare);
}
\ CLI \過程\ Condition.php
public function __construct($dataToShare) {
$this->data = $dataToShare;
}
\ CLI \程序\條件\ Rule.php
public function __construct($dataToShare) {
$this->data = $dataToShare;
}
相反我決定用一個註冊模式,因爲我是偏執狂。我感覺像共享數據從班級到班級,而且很混亂。然後,我發現自己在一個子類中設置了一些註冊表值,這同樣糟糕!
所以一個同事告訴我試試一個抽象類,這樣每個人都可以擴展它。我的問題是,如果我擴展一個抽象類,那麼我的值將不會被設置(因爲它是一個新的父實例)。
是我最好的選擇a Singleton?有沒有人有任何建議,以保持這種清潔?我希望這是乾淨的,我不想讓這種偏執狂想到污染數據並不斷將其傳遞給關卡。
雖然我問這個問題,感覺就像我在水中講中文。
看看http://stackoverflow.com/questions/6094744/dependency-hell-how-does-one-pass-dependencies- to-deeply-nested-objects/6095002#6095002回答你的問題。 [不,單身人士永遠不是你最好的選擇。](http://stackoverflow.com/questions/4595964/who-needs-singletons/4596323#4596323) – Gordon
愛他的第一個音符「這是一個常見的誤解,依賴關係需要通過對象圖表「。 – JREAM
@戈登有了一個房子建設者的例子,你會如何建議我在子類中獲取生成器?我不能重新實例化它,否則它將重置將在其中設置的值。 – JREAM