Tanımlar
Kontrolün tersine çevrilmesi, somut uygulamaların uygulama çerçevesi kodundan farkındalığının azaltılması ve uygulamanızın alana özgü bileşenlerine daha fazla kontrol verilmesi amacıyla bir tasarım paradigmasıdır. Geleneksel yukarıdan aşağıya tasarlanmış bir sistemde, uygulamanın mantıksal akışı ve bağımlılık bilinci, ilk önce tasarlananlardan en son tasarlananlara akar. Bu nedenle, kontrolün tersine çevrilmesi, bir uygulamadaki kontrol ve bağımlılık bilincinin neredeyse tersine çevrilmesidir.
Bağımlılık enjeksiyonu, derleme zamanında, bu işlevselliği sağlamak için hangi uygulamanın kullanılacağını bilmeden, diğer sınıfların dayandığı sınıfların örneklerini oluşturmak için kullanılan bir kalıptır.
Birlikte çalışma
Kontrolün tersine çevrilmesi bağımlılık enjeksiyonunu kullanabilir, çünkü spesifik işlevselliği sağlayan bileşenleri oluşturmak için bir mekanizmaya ihtiyaç vardır. Diğer seçenekler mevcuttur ve bunlar, örneğin aktivatörler, fabrika yöntemleri vb. Kullanılır, ancak çerçeve sınıfları, ihtiyaç duydukları bağımlılığı (ları) kabul edebiliyorsa, çerçevelerin bu fayda sınıflarına başvurması gerekmez.
Örnekler
İşyerinde bu kavramların bir örneği Reflektör'deki eklenti çerçevesidir . Uygulama derleme zamanında eklentilerle ilgili bir şey bilmese de eklentiler sistemin kontrolünü büyük ölçüde kontrol eder. Bu eklentilerin her biri için tek bir yöntem çağrılır, Eklentiyi kontrol altına alan bellek işe yararsa başlat. Çerçeve ne yapacaklarını bilmiyor, sadece yapmalarına izin veriyor. Ana uygulamadan kontrol alınmış ve belirli işleri yapan bileşene verilmiştir; kontrolün ters çevrilmesi.
Uygulama çerçevesi, çeşitli servis sağlayıcılar aracılığıyla işlevselliğine erişim sağlar. Bir eklenti oluşturulduğunda servis sağlayıcılara referanslar verilir. Bu bağımlılıklar eklentinin kendi menü öğelerini eklemesini, dosyaların görüntülenme şeklini değiştirmesini, kendi panellerini uygun panellerde görüntülemesini vb. Sağlar. Bağımlılıklar arayüzden geçtiğinden, uygulamalar değişebilir ve değişiklikler bozulmaz sözleşme bozulmadan kaldığı müddetçe
O zaman, yapılandırma bilgilerini, yansımayı ve Activator nesnesini (en azından .NET'te) kullanarak eklentileri oluşturmak için bir fabrika yöntemi kullanıldı. Günümüzde araçlar vardır MEF bir bağımlılık olarak eklentilerin listesini kabul etmek bir uygulama çerçevesi yapabilme gibi bağımlılıklar enjekte ederken daha geniş bir seçenek yelpazesi için izin biri için.
özet
Bu kavramlar bağımsız olarak kullanılabilir ve yarar sağlarken, birlikte çok daha esnek, yeniden kullanılabilir ve test edilebilir bir kodun yazılmasına izin verir. Bu nedenle, nesneye yönelik çözümler tasarlamada önemli kavramlardır.