1
我有一個班級取決於3個班級,其中3個班級都有其他班級。目前,我正在使用一個容器類來構建所有必需的類,並將它們相互注入並返回應用程序。DI與工廠模式有什麼區別?
容器的簡化版本看起來是這樣的:
class Builder
{
private $_options;
public function __construct($options)
{
$this->_options = $options;
}
public function build()
{
$cache = $this->getCache();
$response = $this->getResponse();
$engine = $this->getEngine();
return new Application($cache,$response,$engine);
}
public function getResponse()
{
$encoder = $this->getResponseEncoder();
$cache = $this->getResponseCache();
return new Response($encoder,$cache);
}
// Methods for building each object
}
我不知道這是否會被列爲FactoryMethod或DI容器。他們似乎都以同樣的方式解決同樣的問題 - 他們構建對象並注入依賴關係。這個容器有一些更復雜的構建方法,比如加載觀察者並將它們附加到可觀察對象上。
工廠應該做所有的建設(加載擴展等),DI容器應該使用這些工廠來注入依賴關係嗎?這樣,子包,如Cache,Response等,都可以擁有自己專門的工廠。
可能的重複:http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern – 2010-04-08 09:07:48