Kayıt Desen
Registry pattern sadece ismini bilen bir nesneyi arama için kullanılan bir kalıptır. Bu desen örneğini iç nesnelerin örneklerini depolar ve bu örnekleri daha sonra almak için bir sözlük eşleme kullanır.
DI Konteyner/DI Desen
bir DI kap nesne türleriiçin soyut bir eşleme olan bir kayıt içerir. Bir nesne çözüldüğünde, bu örnek, nesnenin bağımlılıklarının bağımlılarıdır.
bir DI kabından bir nesne talep
, Eğer kök olarak talep nesne ile başlayan bir
nesne grafiği alır. Her bağımlı nesneyi, her sınıfın yapıcısını, her bir nesneyi, bağımlılık içermeyen sınıflardan başlayarak ve her nesneyi bir kılavuz olarak kayıt defterini kullanarak başlatarak otomatik olarak enjekte edilir.
Bağımlılık Enjeksiyon bir desendoesn't necessarily use a DI container olduğunu. DI kalıbı, uygulamanın giriş noktasında bulunan bir composition root'dan oluşur. Bileşim kökü, türlerin kaydedildiği ve kök nesne grafiğinin örneğinin bulunduğu yerdir. Kök nesne başlatıldıktan sonra, uygulama kendi kendine çalışır. Uygulamanın kendisi DI konteynerine referans göstermez ve ona sıkıca bağlı değildir.
Servis Bulucu
Servis bulucu anti-pattern olmak birçok kişi tarafından kabul edilir. Fikir, kapsayıcıyı nesnenize enjekte etmeniz veya çalışma zamanında örnek oluşturmak için DI kapsayıcısına statik bir başvuru kullanmanızdır.
temel fark, bir uygulama (böylece sıkıca birleştirilmiş) DI kap üzerineaçıkça bağımlı olmasıdır.
Hizmet Konumlandırıcısı'nı kullanmanın bir başka dezavantajı, DI kapsayıcısını enjekte ettiğiniz için, sınıf yapıcılarından hangi arabirimlere bağlı olduğunu görmek mümkün değildir. Bunun yerine, bir sınıfın bağımlılıklarının ne olduğunu belirlemek için belgelere başvurmanız veya kaynak kodunu analiz etmeniz gerekir.
Anti-desen olarak kabul edilmesine rağmen, kullanımının mantıklı olduğu durumlar da vardır. Bununla birlikte, diğer tüm seçenekler (ortam içeriği, mülk enjeksiyonu vb.) Tükendikten sonra son çare olarak düşünülmelidir.