Ben onlar güveniyor diğer sınıfları tüm 3 tanesi 3 sınıfa bağlıdır bir sınıf var. Şu anda, ben, tüm gerekli sınıfları kurmak birbiri içine enjekte ve uygulamayı geri dönmek için bir kap sınıfını kullanıyorum.
Kabın basitleştirilmiş versiyonu şöyle:
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
}
Ben bu FactoryMethod veya DI kapsayıcı olarak sınıflandırılmış olacaktır emin değilim. Her ikisi de aynı şekilde aynı sorunu çözmek için görünüyor - Onlar nesneler oluşturmak ve bağımlılıkları enjekte. Bu konteyner gözlemci yükleme ve gözlemlenebilir nesnelerin onlara atfeden gibi, biraz daha karmaşık yapı yöntemleri vardır.
Fabrika tüm binayı (yükleme uzantıları vb) yapıyor olmalı ve DI konteyner bağımlılıkları enjekte bu fabrikaları kullanmalıyım? Bu şekilde vb Cache, Müdahale gibi alt paketler, her biri kendi özel fabrikalar olabilir.