Bunu doğru yapmak için önce bağımlılıkları ve enjeksiyonu tanımlamalıyız.
- Bağımlılık: bir işlemin ihtiyaç duyduğu tüm kaynaklar.
- Enjeksiyon: bu kaynağı işleme, tipik olarak bir yönteme argüman olarak geçirme.
İlkel örnek, iki değer katan bir yöntem olabilir. Açıkçası, bu yöntemlerin eklenmesi gereken değerlere ihtiyacı vardır. Eğer bunları argüman olarak ileterek sağlanırlarsa, bu zaten bir bağımlılık enjeksiyonu vakası olacaktır. Alternatif, işlenenleri özellikler veya global değişkenler olarak uygulamak olacaktır. Bu şekilde hiçbir bağımlılık enjekte edilmeyecek, bağımlılıklar dışarıdan alınabilecektir.
Bunun yerine özellikleri kullandığınızı ve bunları A ve B olarak adlandırdığınızı varsayalım. Adları Op1 ve Op2 olarak değiştirirseniz, Add yöntemini kırarsınız. Veya IDE'niz sizin için tüm isimleri güncelleyecekti, mesele, yöntemin de güncellenmesi gerekecek, çünkü dış kaynaklara bağımlılıkları var.
Bu örnek temeldir, ancak yöntemin görüntü gibi bir nesne üzerinde işlem gerçekleştirdiği veya bir dosya akışından okuduğu daha karmaşık örnekler hayal edebilirsiniz. Resmin nerede olduğunu bilmesini gerektiren yönteme ulaşmasını ister misiniz? Hayır. Yöntemin dosyanın kendisini açmasını, dosyayı nerede arayacağını ve hatta bir dosyadan okunacağını bilmesini ister misiniz? Hayır.
Amaç: Bir yöntemin işlevselliğini temel davranışına indirgemek ve yöntemi ortamından ayırmak. Birincisini ikincisini alarak alırsınız, bunu bağımlılık enjeksiyonunun tanımı olarak düşünebilirsiniz.
Avantajlar: yöntemin ortamına bağımlılıklar ortadan kaldırıldığı için, yöntemdeki değişiklikler çevreyi etkilemez ve bunun tersi de geçerlidir. => Uygulamanın bakımı (değiştirmesi) kolaylaşır.