Junior — Middle
Asılılıqların əks istiqamət prinsipini və bunun proqram təminatı sistemlərinin dizaynında əhəmiyyətini izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıqların Əksinə Çevrilməsi Prinsipi (Dependency Inversion Principle, DIP) SOLID prinsiplərindən biridir və deyir ki:
- Yuxarı səviyyəli modullar aşağı səviyyəli modullara bağlı olmamalıdır. Hər ikisi abstraksiyalara bağlı olmalıdır.
- Abstraksiyalar detallara bağlı olmamalıdır. Detallar abstraksiyalara bağlı olmalıdır.
Bu, bir sinfin birbaşa olaraq konkret asılılıq tətbiqlərini yaratması və ya istifadə etməsi yerinə, interfeyslər və ya abstrakt sinflər vasitəsilə işləməli olduğu anlamına gəlir. Bu, kodun çevikliyini və test ediləbilənliyini artırır.
C# nümunəsi:
// Abstraksiya
public interface IMessageSender
{
void Send(string message);
}
// Konkret tətbiq
public class EmailSender : IMessageSender
{
public void Send(string message) {
Console.WriteLine($"Email göndərilir: {message}");
}
}
// Abstraksiyaya bağlı sinif
public class NotificationService
{
private readonly IMessageSender _messageSender;
public NotificationService(IMessageSender messageSender) {
_messageSender = messageSender;
}
public void Notify(string message) {
_messageSender.Send(message);
}
}
// İstifadə
var emailSender = new EmailSender();
var notification = new NotificationService(emailSender);
notification.Notify("Salam!");
Bu yanaşma, mesaj göndərmə implementasiyasını asanlıqla dəyişməyə imkan verir və test üçün mock-ların asanlıqla daxil edilməsini təmin edir.