Dependency Injection Nedir?

İbrahim     17 Eylül 2017     635     2    
Dependency Injection(Bağımlılık Enjeksiyonu), temel olarak oluşturulacak bir sınıf içerisinde, başka bir sınıfın nesnesi kullanılacak ise new anahtar sözcüğüyle değil, gereken nesnenin ya constructor’dan ya da setter metoduyla parametre olarak alınması gerektiğini vurgulayan bir yaklaşımdır.Bu yaklaşım uygulandığında, yapıların birbirleriyle olan sıkı bağı azalacağı için uygulamaya yeni özellikler eklenip çıkartılabilmesi kolay hale gelecektir.

Örnek : 

İlk olarak sınıflarımızı ve 'Giyin' adlı metodlarımızı oluşturalım.

public class Ceket
{
    public string Giyin()
    {
        return "Hava biraz rüzgarlı olduğu için ceket giydim!";
    }
}

public class Gomlek
{
    public string Giyin()
    {
        return "Bugün hava çok iyi olduğu için gömlek giydim!";
    }
}

public class Mont
{
    public string Giyin()
    {
        return "Hava çok soğuk olduğu için mont giydim!";
    }
}

 

Ardından 'Insan' sınıfımızı oluşturalım.

public class Insan
{
    Mont mont = new Mont();

    public string Giydir()
    {
        return mont.Giyin();
    }
}

 

Şimdi program.cs kısmına kodlarımızı yazalım ve çalıştıralım.

class Program
{
    static void Main(string[] args)
    {
        Insan insan = new Insan(new Mont());
        Console.WriteLine(insan.Giydir());
        Console.ReadKey();
    }
}

 

Çıktı :

Dependency Injection Nedir?

Bakıldığında herşey normal gibi ama burada insana, mont değilde gömlek giydirecek olsaydık, Insan sınıfında değişiklik yapmamız gerecekti.Ayrıca insan sınıfı yukarıda anlatıldığı gibi bir sınıfa bağlı.Şuanda mont sınıfıyla işlem yaptığımız için mont sınıfına bağlı durumda.

 

Gelin şimdi dependency injection yaklaşımıyla sınıflarımızı tekrar oluşturalım.

İlk olarak IKiyafet adlı bir interface oluşturalım.Tüm sınıflarımızda ortak giyin metodu olduğu için tüm sınıfların IKiyafet arayüzünü kullanmasını sağlayalım.

public interface IKiyafet
{
    string Giyin();
}
public class Ceket : IKiyafet
{
    public string Giyin()
    {
        return "Hava biraz rüzgarlı olduğu için ceket giydim!";
    }
}

public class Gomlek : IKiyafet
{
    public string Giyin()
    {
        return "Bugün hava çok iyi olduğu için gömlek giydim!";
    }
}

public class Mont : IKiyafet
{
    public string Giyin()
    {
        return "Hava çok soğuk olduğu için mont giydim!";
    }
}

 

Şimdi Insan sınıfına geçelim.

public class Insan
{
    IKiyafet kiyafet;
    public Insan(IKiyafet _kiyafet)
    {
        kiyafet = _kiyafet;
    }

    public string Giydir()
    {
        return kiyafet.Giyin();
    }
}

 

Şimdi program.cs kısmına kodlarımızı yazalım ve çalıştıralım.

class Program
{
    static void Main(string[] args)
    {
        Insan insan = new Insan(new Mont());
        Console.WriteLine(insan.Giydir());
        Console.ReadKey();
    }
}

 

Çıktı

Dependency Injection Nedir?

 

Artık insan sınıfı bağımlı değil.Artık insana mont değilde ceket yada gömlek giydirmek, program.cs de yapacağımız tek değişikliğe bakar.Örnek olarak, gömlek giydirecek olsak, Insan sınıfına Gomlek sınıfının örneğini göndermemiz yeterli olacaktır.

class Program
{
    static void Main(string[] args)
    {
        Insan insan = new Insan(new Gomlek());
        Console.WriteLine(insan.Giydir());
        Console.ReadKey();
    }
}

 

Dependency Injection ile anlatacaklarım bu kadar arkadaşlar.İşinize yaraması dileğiyle iyi kodlamalar dilerim.


Etiketler:  
dependency-injection
dependency-injection-nedir
bagimlilik-enjeksiyonu


Paylaş:  

Bir Cevap Yazın

Y

yo! 11 Ocak 2018
eyvallah kardesssssss

İbrahim Çakal 2 Şubat 2018
Ne demek :)