Dependency Injection (Bağımlılık Enjeksiyonu)

Dependency Injection, projemiz içerisinde ki bağımlılıkları azaltan bir injection yapısıdır.

Her geliştiricinin uyması gereken SOLID kavramları vardır. SOLID, yazılan kodun temiz anlaşılabilir ve evrensel olarak kullanılabilmesi için uyulması gereken prensipler olarak özetleyebiliriz. Projeyi yazan kişi dışında projeye dahil olan başka geliştiricilerin de kodu anlayabilmesi için kesinlikle uyulması gereken kurallar bütünüdür diyebiliriz. SOLID kavramının D kısmı bizim yazımızın prensibidir.

Dependency Inversion Principle,

Bağımlılığı azaltmak için kullanılan bir yöntemdir, prensibin en büyük anlatımı olarak ‘üst seviye sınıfların alt sınıflara bağımlı olmamasıdır.’

Dependency Injection Mantığının Örneği

Dependency Injection, anlatımımıza mantığını anlamanız için kısa bir örnekle anlatalım. Proje oluştururken bu kodu sizden başkalarının da projede çalışabileceğini unutmamalısınız. Herkesin anlayabilmesi için yapılmış olan kurumsal katmanlı mimari üzerinden düşünebiliriz. Katmanlı mimari içerisinde 4 katman bulunuyor bir yazılımcının birikimi hazinesi diyebileceğiniz, hemen her projede kullanabileceğiniz kodlarınızı yazdığınız katman Core katmanıdır. Core katmanı içerisine yazılan kodlar hiç bir zaman başka bir katman içerisinden referans almaz, core katmanınız bütün projenize referans olur ama hiç bir katmandan referans almaz. Core katmanında örnek olarak Email servisiniz ve Sms servisiniz var neredeyse yaptığınız bir çok projede bu servislerden yararlanabiliriz. Bağımsız bir şekilde yazılan bu servisleri kullanım şeklimiz , İş katmanımız içerisinde hangi kural veya sınıf içerisinden Email veya Sms göndermek istiyorsak Sms sınıfını ve Email sınıfını iş kurallarımızın içerisinde inject sonra kullanılabilir hale getirebiliriz. Hem gayet anlaşılabilir bir kod hem de basit bir şekilde injection işlemimizi yaptık. Şimdi örneğimizi basit bir şekilde koda döküp gösterelim.

Öncelikle bir Email servisimizi oluşturduktan sonra EmailService için bir interface oluşturuyoruz.

Interface kodumuzun devamlılığı için kesinlikle kullanmamız gereken kavramlardan bir tanesidir. Interface içinde gerçekleşmesini istediğimizin servisimizi yazıyoruz. Class içerisine implemente ediyoruz.

Daha sonra Sms servisimizi oluşturup, interface oluşturuyoruz interface içersine çalışmasını istediğimiz servisimizi yazıyoruz ve implemente ediyoruz.

Yukarıda yaptığımız gibi tekrar bir interface tanımlıyoruz.

Çok basit bir şekilde daha önce oluşturduğumuz Interfaceleri burada injection işlemimizi yapıyoruz. Class içerisinde tanımladıktan sonrasında çalıştırmak istediğimiz iş içerisine ekliyoruz. Çok basit bir şekilde çalışmaya hazır ve her projede kullanılabilecek bir yapı hazırladık.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »