Sobes.tech
Intern

Dependency Injection ile Dependency Inversion arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılık Enjeksiyonu (Dependency Injection, DI) ve Bağımlılık Ters Çevirme (Dependency Inversion, DIP) kavramları, yazılım tasarımı alanında ilişkili ancak farklı kavramlardır.

  • Bağımlılık Ters Çevirme Prensibi (DIP) — SOLID prensiplerinden biridir. Şöyle der:

    1. Üst seviye modüller, alt seviye modüllere bağlı olmamalıdır. Her ikisi de soyutlamalara bağlı olmalıdır.
    2. Soyutlamalar, detaylara bağlı olmamalıdır. Detaylar, soyutlamalara bağlı olmalıdır.

    Bu prensip, bağlılığı azaltmayı ve mimarinin esnekliğini artırmayı amaçlar.

  • Bağımlılık Enjeksiyonu (DI) — bağımlılıkların ters çevrilmesini uygulamak için kullanılan bir desen (yöntem). DI, bir nesnenin bağımlılıklarının dışarıdan (örneğin, yapıcı, ayar metodu veya arayüz aracılığıyla) verildiği anlamına gelir, nesne içinde oluşturulmaz.

C++'ta DI örneği:

class ILogger {
public:
    virtual void Log(const std::string& message) = 0;
};

class ConsoleLogger : public ILogger {
public:
    void Log(const std::string& message) override {
        std::cout << message << std::endl;
    }
};

class Application {
    ILogger& logger;
public:
    Application(ILogger& logger) : logger(logger) {}
    void Run() {
        logger.Log("Uygulama başlatıldı");
    }
};

int main() {
    ConsoleLogger logger;
    Application app(logger); // bağımlılık enjeksiyonu
    app.Run();
}

Özetle: DIP, bir tasarım prensibi iken, DI onun uygulanma biçimidir.