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:
- Üst seviye modüller, alt seviye modüllere bağlı olmamalıdır. Her ikisi de soyutlamalara bağlı olmalıdır.
- 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.