Sobes.tech
Junior — Middle

Bağımlılıkların tersine çevrilmesi ilkesini ve bunun yazılım sistemlerinin tasarımında nasıl uygulandığını açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılıkların Tersine Çevrilmesi İlkesi (Dependency Inversion Principle, DIP), SOLID ilkelerinden biridir ve şunu söyler:

  • Ü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, doğrudan belirli sınıflar veya modüller oluşturmak ve kullanmak yerine, arayüzler veya soyut sınıflar aracılığıyla çalıştığımız anlamına gelir. Bu, esnekliği artırır ve kodun test edilmesini ve bakımını kolaylaştırır.

Yazılım sistemlerinin tasarımında, bu şu şekilde uygulanır:

  • Bileşenler, somut uygulamalardan çok, arayüzlere bağlıdır.
  • Uygulamalar, onları kullanan kodu değiştirmeden değiştirilebilir.
  • Bağımlılık enjeksiyonu (Dependency Injection) yoluyla bağımlılıkların enjekte edilmesine izin verir.

Node.js örneği:

// Soyutlama
class Logger {
  log(message) {
    throw new Error('Uygulanmadı');
  }
}

// Somut uygulama
class ConsoleLogger extends Logger {
  log(message) {
    console.log(message);
  }
}

// Soyutlamaya bağımlı sınıf
class UserService {
  constructor(logger) {
    this.logger = logger;
  }

  createUser(name) {
    // kullanıcı oluşturma mantığı
    this.logger.log(`Kullanıcı ${name} oluşturuldu`);
  }
}

const logger = new ConsoleLogger();
const userService = new UserService(logger);
userService.createUser('Alice');

Burada, UserService, belirli bir ConsoleLogger yerine, Logger soyutlamasına bağlıdır. Bu, başka bir logger ile değiştirmeyi kolaylaştırır, örneğin dosyaya kaydetmek için, UserService'i değiştirmeden.