ozztech_logo_white

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​

DEAUTH ATTACK NEDİR?

Herhangi bir kablosuz ağda bağlı bulunan cihazları ağdan bağlantısını kesmeye yarayan bir saldırı çeşididir. Bu saldırıyı yapabilmek için hedef ağın MAC adresini bilmek gereklidir. İster

Devamı »
AOP(Aspect Oriented Programming)

Öncelikle daha önce bahsettiğimiz SOLID prensiplerine uyulmasını sağlayan AOP’nin çıkış noktası olan “Separation of Concern” ile yazımıza başlayalım. Yukarıda ki fotoğrafta görüldüğü üzere en basit

Devamı »
Hyper-V üzerinde sanal Switch oluşturma

Sanal Switch Nedir? Sanal switch, sanal işletim sistemlerimizin veya makinelerimizin kendileri arasında iletişim kurabilmesi ve sanal makinelerimizin ağa bağlanmaları için Hyper-V üzerinde varsayılan olarak gelen

Devamı »
Database Types

Database tiplerini anlatmadan önce, database kavramlarından bahsedelim. Veri Nedir? Veriye yaygın bir isim koymak gerekirse bilgi diyebiliriz. Veri her şey olabilir, Adın, yaşın , kilon,

Devamı »
SQL & NoSQL nedir?

SQL Nedir ? (Structed Query Language) Sql  aslında bakarsanız bir dildir.Veritabanları yönetmek için kullanılan bir dil olarak çıkar karşımıza. Veritabanı içerisinde yaptığımız hareketleri işlemleri bu

Devamı »