我需要一個工廠對象能夠創建多個對象,但是在其中注入其他對象。 例如:工廠對象創建需要其他對象的對象
class MyFactory
{
public function createObjectA() {
return new ObjectA(new ObjectANeededObject1(), new ObjectANeededObject1());
}
public function createObjectB() {
return new ObjectB(new ObjectBNeededObject1(), new ObjectBNeededObject1());
}
}
如果我廠也實例化所需的對象(考慮到我的工廠被允許創建任何對象)?我應該通過注入傳遞給我的工廠構造函數(但構造函數將包含很多許多參數)? 我是否應該將它們作爲參數傳遞到我的工廠方法中(但工廠客戶端會知道應該如何創建該對象,而不是知道它的責任)? 我的工廠應該創建對象構建器(能夠創建我的對象及其必需的對象)而不是直接對象嗎?
你推薦什麼?
謝謝
本
這是您開始閱讀[依賴注入容器](http://www.phptherightway.com/#containers)(DIC) –
的時間。謝謝馬克。如果我理解得很好,一個容器將幫助我們創建不同的對象ObjectXNeddedObjectY。但是,如果我沒有錯,這是同樣的問題,我讀了我不應該給我的容器所有對象,而只是傳遞容器創建的對象。那麼我是否應該將所有對象ObjectXNeddedObjectY(由我的容器創建)傳遞給我的工廠? –
DIC應該返回一個特定於要實例化的類的對象集合,然後工廠可以使用反射來使用集合實例化該類,例如使用諸如http://www.php.net/manual/的調用en/reflectionclass.newinstanceargs.php' –