← Back to list

Dependency Injection (DI) Nedir?

Bağımlılık enjeksiyonu (Dependency Injection — DI), bir yazılım bileşeninin, ihtiyaç duyduğu diğer bileşenleri kendisi oluşturmak veya…

Zehra Çakır · 2024-03-29 10:48 · 4 claps · 1.8 min read
#dependency-injection #constructor-injection #setter-injection #method-injection
Open on Medium ↗

Dependency Injection (DI) Nedir?

Bağımlılık enjeksiyonu (Dependency Injection — DI), bir yazılım bileşeninin, ihtiyaç duyduğu diğer bileşenleri kendisi oluşturmak veya somut bir şekilde bağımlılıklarını tanımlamak yerine, dışarıdan almasını sağlar.

  • DI, bileşenler arasındaki sıkı bağları gevşetir, kodun daha esnek, yeniden kullanılabilir ve test edilebilir olmasını sağlar.

DI, genellikle aşağıdaki üç ana şekilde uygulanır:

  1. Constructor Injection (Kurucu Enjeksiyon): Bağımlılıklar, bir sınıfın constructor’ına parametre olarak geçirilir.
using System;

// bagimliligimizi temsil eden arayuz
public interface IServis
{
    void YapilacakIslem();
}

// Bagimliligin somut implementasyonu
public class Servis : IServis
{
    public void YapilacakIslem()
    {
        Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
    }
}

// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
    private readonly IServis _servis; // bagimlilik 

    // Constructor Injection ile bagimliligi alir
    public Sinif(IServis servis)
    {
        _servis = servis;
    }

    // Bagimliligi kullanarak bir islem gerceklestirir
    public void IslemYap()
    {
        _servis.YapilacakIslem();
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Servis sinifini kullanarak Sinif nesnesi olusturur
        IServis servis = new Servis();
        Sinif sinif = new Sinif(servis);

        // Sinif sinifinin islemini gerceklestirir
        sinif.IslemYap();
    }
}

2. Setter Injection (Setter Enjeksiyon): Bağımlılıklar, ilgili sınıftaki setter metodları aracılığıyla atanır.

using System;

// bagimliligimizi temsil eden arayuz
public interface IServis
{
    void YapilacakIslem();
}

// Bagimliligin somut implementasyonu
public class Servis : IServis
{
    public void YapilacakIslem()
    {
        Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
    }
}

// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
    private IServis _servis;

    // Servis bagimliliginin Setter metodu
    public void SetServis(IServis servis)
    {
        _servis = servis;
    }

    // Bagimliligi kullanarak bir islem gerceklestirir
    public void IslemYap()
    {
        _servis.YapilacakIslem();
    }
}

class Program
{
    static void Main(string[] args)
    {
        IServis servis = new Servis();
        Sinif sinif = new Sinif();

        // Bagimliligi enjekte eder
        sinif.SetServis(servis);

        // Sinif sinifinin islemini gerceklestirir
        sinif.IslemYap();
    }
}
  1. Method Injection (Metot ile Enjeksiyon): Sınıfın içinde kullanılacak bağımlılık, ilgili metotlara parametre olarak verilir.
using System;

// Bagimliligimizi temsil eden arayüz
public interface IServis
{
    void YapilacakIslem();
}

// Bagimliligin somut implementasyonu
public class Servis : IServis
{
    public void YapilacakIslem()
    {
        Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
    }
}

// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
    // Bagimliligi kullanarak bir islem gerceklestirir
    public void IslemYap(IServis servis)
    {
        servis.YapilacakIslem();
    }
}

class Program
{
    static void Main(string[] args)
    {
        IServis servis = new Servis();
        Sinif sinif = new Sinif();

        // Bağımlılığı enjekte eder
        sinif.IslemYap(servis);
    }
}

Dependency Injection’ın yazılım geliştirme sürecinde sunduğu avantajları:

  • Modülerlik ve Esneklik
  • Yeniden Kullanılabilirlik
  • Test Edilebilirlik

Bu nedenlerden dolayı, Dependency Injection modern yazılım geliştirme süreçlerinde sıkça kullanılan bir design patterndir.


메타데이터
post_id
2e3bfcae968e
slug
dependency-injection-di-nedir-2e3bfcae968e
url
https://medium.com/@zehra-cakir/dependency-injection-di-nedir-2e3bfcae968e
canonical_url
https://medium.com/@zehra-cakir/dependency-injection-di-nedir-2e3bfcae968e
author_url
https://medium.com/@zehra-cakir
status
ok
fetched_at
2026-07-09 10:05:04