Dilimizdeki karşılığı Bağımlılık Enjeksiyonu olan bu örüntü nesne tabanlı programlamada bağımlılıkların yönetimi ve kontrolü için kullanılmaktadır.
Ana hedef bağımlılıkların tek bir noktaya toplanması ve merkezden yönetilmesidir. Herhangi bir bağımlılık için nesneye ihtiyaç duyulduğunda, ilgili nesne DI aracı üzerinden oluşturulur. Yani bağımlılık nesnelerinin oluşumu için bakmamız gereken tek bir nokta olur.
DipNot: Her zaman tek bir nokta olmak zorunda değildir, bu proje mimarisine göre değişiklik gösterebilir ama günün sonunda DI tanımlamalarını yaptığımız merkez noktalar olacaktır.
DI bize Constructor Injection, Method Injection ve Property Injection imkanları sunmaktadır. Nesne tabanlı programlama destekleyen dillerin çoğunda DI araçlarında Singleton desteği bulunmaktadır, yani Singleton DP uygulaması için ayrıca efor sarfetmemiz gerekmez.
Faydaları Neler?
- Bağımlılık yönetimi yükünü bizim için DI araçları üstlenmektedir.
- Gevşek bağlılık (loose coupling) prensiplerine uygun hareket etmemizi sağlar. Bağımlılıklar ile ilgili tanımlamalarımız bir noktada olacağından olası değişiklikler ve geliştirmeler çok daha kolay olur.
- Kodumuz çok daha okunabilir, anlaşılabilir ve en önemlisi test edilebilir olacaktır.
Ne Yapmalı?
Mümkün mertebe elle yeni bir nesne oluşturmamamız gerekir. Burada elle kelimesini özellikle kullandım çünkü; DI çözümleri ilgili nesneye ihtiyaç duyulması halinde otomatik olarak devreye girmekte ve yeni nesneyi kendi containerı üzerinden oluşturup enjekte etmektedir.
Bu konu ile ilgili ilk fırsatta örnek uygulamalar hazırlayıp kodlarını makale içeriğine ekleyeceğim, takipte kalmanızı tavsiye ederim 🙂